Skip to content

Commit

Permalink
Check Transaction Sender state
Browse files Browse the repository at this point in the history
  • Loading branch information
DylanTinianov committed Sep 6, 2024
1 parent 30369a6 commit 0037103
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 5 deletions.
7 changes: 5 additions & 2 deletions common/client/transaction_sender.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,9 @@ func (txSender *TransactionSender[TX, CHAIN_ID, RPC]) SendTransaction(ctx contex
txResultsToReport := make(chan sendTxResult)
primaryNodeWg := sync.WaitGroup{}

ctx, cancel := txSender.chStop.Ctx(ctx)
defer cancel()
if txSender.State() != "Started" {
return 0, errors.New("TransactionSender not started")
}

healthyNodesNum := 0
err := txSender.multiNode.DoAll(ctx, func(ctx context.Context, rpc RPC, isSendOnly bool) {
Expand Down Expand Up @@ -215,6 +216,8 @@ func (txSender *TransactionSender[TX, CHAIN_ID, RPC]) collectTxResults(ctx conte
if healthyNodesNum == 0 {
return Retryable, ErroringNodeError
}
ctx, cancel := txSender.chStop.Ctx(ctx)
defer cancel()
requiredResults := int(math.Ceil(float64(healthyNodesNum) * sendTxQuorum))
errorsByCode := sendTxResults{}
var softTimeoutChan <-chan time.Time
Expand Down
2 changes: 1 addition & 1 deletion common/client/transaction_sender_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ func TestTransactionSender_SendTransaction(t *testing.T) {

require.NoError(t, txSender.Close())
_, err := txSender.SendTransaction(tests.Context(t), nil)
require.EqualError(t, err, "context canceled")
require.EqualError(t, err, "TransactionSender not started")
})
t.Run("Returns error if there is no healthy primary nodes", func(t *testing.T) {
chainID := types.RandomID()
Expand Down
5 changes: 3 additions & 2 deletions core/chains/evm/client/chain_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -859,12 +859,13 @@ func TestEthClient_ErroringClient(t *testing.T) {
_, err = erroringClient.PendingNonceAt(ctx, common.Address{})
require.Equal(t, err, commonclient.ErroringNodeError)

txSenderNotStarted := errors.New("TransactionSender not started")
err = erroringClient.SendTransaction(ctx, nil)
require.Equal(t, err, commonclient.ErroringNodeError)
require.Equal(t, err, txSenderNotStarted)

code, err := erroringClient.SendTransactionReturnCode(ctx, nil, common.Address{})
require.Equal(t, code, commonclient.Unknown)
require.Equal(t, err, commonclient.ErroringNodeError)
require.Equal(t, err, txSenderNotStarted)

_, err = erroringClient.SequenceAt(ctx, common.Address{}, nil)
require.Equal(t, err, commonclient.ErroringNodeError)
Expand Down

0 comments on commit 0037103

Please sign in to comment.