Skip to content

Commit

Permalink
move polling free sender from inside handleRelay to RelayPacket (#18)
Browse files Browse the repository at this point in the history
  • Loading branch information
nkitlabs authored Dec 2, 2024
1 parent 1181056 commit 5d93646
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 20 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.22.3
require (
cosmossdk.io/math v1.4.0
cosmossdk.io/x/tx v0.13.5
github.com/bandprotocol/chain/v3 v3.0.0-20241129172445-c5b601ea4ba4
github.com/bandprotocol/chain/v3 v3.0.0-20241202095241-21710ba55161
github.com/cometbft/cometbft v0.38.12
github.com/cosmos/cosmos-sdk v0.50.10
github.com/cosmos/gogoproto v1.7.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN
github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ=
github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
github.com/bandprotocol/chain/v3 v3.0.0-20241129172445-c5b601ea4ba4 h1:7bsvpGDgM62+AKJIRtKX8UJX2B8x7ezMVNiUpOherVY=
github.com/bandprotocol/chain/v3 v3.0.0-20241129172445-c5b601ea4ba4/go.mod h1:7609g+Iyhar8ySbKEJiqHfRq8xwJh5r2YE5vBebXMS4=
github.com/bandprotocol/chain/v3 v3.0.0-20241202095241-21710ba55161 h1:WMKRzgZL3OEiW2AbIzlYiHOplKY3ZBimTTPFNi8OhNA=
github.com/bandprotocol/chain/v3 v3.0.0-20241202095241-21710ba55161/go.mod h1:7609g+Iyhar8ySbKEJiqHfRq8xwJh5r2YE5vBebXMS4=
github.com/bandprotocol/go-owasm v0.3.1 h1:L38qAEmb0KyTICHBHJaBoo6yy5+BlbOzQeQ+ioUV5Uw=
github.com/bandprotocol/go-owasm v0.3.1/go.mod h1:SAzGihlBl8eZDXA1dO2aeAZLm8J2QkNd+KvnA2Dw9Kg=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
Expand Down
1 change: 0 additions & 1 deletion relayer/band/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ func (s *AppTestSuite) TestGetTunnel() {
ID: uint64(1),
Sequence: 100,
Route: any,
Encoder: 0,
FeePayer: "cosmos1xyz...",
SignalDeviations: []tunneltypes.SignalDeviation{},
Interval: 60,
Expand Down
30 changes: 14 additions & 16 deletions relayer/chains/evm/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,18 @@ func (cp *EVMChainProvider) RelayPacket(
return fmt.Errorf("failed to estimate gas: %w", err)
}

// get a free sender
sender := <-cp.FreeSenders
defer func() { cp.FreeSenders <- sender }()

cp.Log.Debug(
fmt.Sprintf("Relaying packet using address: %v", sender.Address),
zap.String("evm_sender_address", sender.Address.String()),
zap.String("chain_name", cp.ChainName),
zap.Uint64("tunnel_id", packet.TunnelID),
zap.Uint64("sequence", packet.Sequence),
)

retryCount := 0
for retryCount < cp.Config.MaxRetry {
cp.Log.Info(
Expand All @@ -182,7 +194,7 @@ func (cp *EVMChainProvider) RelayPacket(
)

// create and submit a transaction; if failed, retry, no need to bump gas.
txHash, err := cp.handleRelay(ctx, packet, gasInfo)
txHash, err := cp.handleRelay(ctx, packet, sender, gasInfo)
if err != nil {
cp.Log.Error(
"HandleRelay error",
Expand Down Expand Up @@ -293,28 +305,14 @@ func (cp *EVMChainProvider) RelayPacket(
func (cp *EVMChainProvider) handleRelay(
ctx context.Context,
packet *bandtypes.Packet,
sender *Sender,
gasInfo GasInfo,
) (txHash string, err error) {
calldata, err := cp.createCalldata(packet)
if err != nil {
return "", fmt.Errorf("failed to create calldata: %w", err)
}

if len(cp.FreeSenders) == 0 {
return "", fmt.Errorf("no key available to relay packet")
}

sender := <-cp.FreeSenders
defer func() { cp.FreeSenders <- sender }()

cp.Log.Debug(
fmt.Sprintf("Relaying packet using address: %v", sender.Address),
zap.String("evm_sender_address", sender.Address.String()),
zap.String("chain_name", cp.ChainName),
zap.Uint64("tunnel_id", packet.TunnelID),
zap.Uint64("sequence", packet.Sequence),
)

tx, err := cp.newRelayTx(ctx, calldata, sender.Address, gasInfo)
if err != nil {
return "", fmt.Errorf("failed to create an evm transaction: %w", err)
Expand Down

0 comments on commit 5d93646

Please sign in to comment.