diff --git a/etherclient/backoff.go b/etherclient/backoff.go index a48b31d..d5ab242 100644 --- a/etherclient/backoff.go +++ b/etherclient/backoff.go @@ -2,6 +2,7 @@ package etherclient import ( "context" + "net/url" "time" "github.com/cenkalti/backoff" @@ -48,9 +49,22 @@ func (ec *etherClient) withBackoff( if ctx.Err() != nil { return backoff.Permanent(ctx.Err()) } + + wrapper := ec.provider.Provide() + ethClient := wrapper.Client tCtx, cancel := context.WithTimeout(ctx, backoffContextTimeout) - err := operation(tCtx, ec.provider.Provide()) + err := operation(tCtx, ethClient) cancel() + + // If metrics handler is set, call with the RPC URL and the client method that was used. + if ec.metricsHandler != nil { + rpcUrl := wrapper.url + u, err := url.Parse(rpcUrl) + if err == nil { + ec.metricsHandler(u.Host, method) + } + } + if err != nil { // Move onto the next provider. ec.provider.Next() diff --git a/etherclient/client.go b/etherclient/client.go index c4a9066..e282517 100644 --- a/etherclient/client.go +++ b/etherclient/client.go @@ -57,6 +57,7 @@ type EtherClient interface { Extras SetRetryInterval(d time.Duration) + SetMetricsHandler(h func(rpcHost, clientMethod string)) } type Extras interface { @@ -81,23 +82,34 @@ type Extras interface { // etherClient is a wrapper of go-ethereum ethclient.Client which uses multiple fallback // clients and retries every request. type etherClient struct { - provider provider.Provider[*ethclient.Client] + provider provider.Provider[*ethClientWrapper] retryInterval time.Duration + + metricsHandler func(rpcHost, clientMethod string) } var _ EtherClient = ðerClient{} var _ EthClient = ðclient.Client{} +type ethClientWrapper struct { + url string + *ethclient.Client +} + +func (ecw *ethClientWrapper) GetURL() string { + return ecw.url +} + // NewRetrierClient dials all given URLs and creates a client that works with multiple clients // and a backoff logic. func DialContext(ctx context.Context, rawurls ...string) (*etherClient, error) { - var clients []*ethclient.Client + var clients []*ethClientWrapper for _, rawurl := range rawurls { c, err := ethclient.DialContext(ctx, rawurl) if err != nil { return nil, err } - clients = append(clients, c) + clients = append(clients, ðClientWrapper{url: rawurl, Client: c}) } return ðerClient{ provider: provider.NewRingProvider(clients...), @@ -109,8 +121,12 @@ func (ec *etherClient) SetRetryInterval(d time.Duration) { ec.retryInterval = d } +func (ec *etherClient) SetMetricsHandler(h func(rpcHost, clientMethod string)) { + ec.metricsHandler = h +} + func (ec *etherClient) Client() *rpc.Client { - return ec.provider.Provide().Client() + return ec.provider.Provide().Client.Client() } func (ec *etherClient) Close() { @@ -118,7 +134,7 @@ func (ec *etherClient) Close() { } func (ec *etherClient) ChainID(ctx context.Context) (ret1 *big.Int, err error) { - err = ec.withBackoff(ctx, "ChainID()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "ChainID", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.ChainID(ctx) ret1 = r1 return e @@ -129,7 +145,7 @@ func (ec *etherClient) ChainID(ctx context.Context) (ret1 *big.Int, err error) { } func (ec *etherClient) BlockByHash(ctx context.Context, hash common.Hash) (ret1 *types.Block, err error) { - err = ec.withBackoff(ctx, "BlockByHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "BlockByHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.BlockByHash(ctx, hash) if e != nil { return e @@ -148,7 +164,7 @@ func (ec *etherClient) BlockByHash(ctx context.Context, hash common.Hash) (ret1 } func (ec *etherClient) BlockByNumber(ctx context.Context, number *big.Int) (ret1 *types.Block, err error) { - err = ec.withBackoff(ctx, "BlockByNumber()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "BlockByNumber", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.BlockByNumber(ctx, number) if e != nil { return e @@ -167,7 +183,7 @@ func (ec *etherClient) BlockByNumber(ctx context.Context, number *big.Int) (ret1 } func (ec *etherClient) BlockNumber(ctx context.Context) (ret1 uint64, err error) { - err = ec.withBackoff(ctx, "BlockNumber()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "BlockNumber", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.BlockNumber(ctx) ret1 = r1 return e @@ -178,7 +194,7 @@ func (ec *etherClient) BlockNumber(ctx context.Context) (ret1 uint64, err error) } func (ec *etherClient) PeerCount(ctx context.Context) (ret1 uint64, err error) { - err = ec.withBackoff(ctx, "PeerCount()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "PeerCount", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.PeerCount(ctx) ret1 = r1 return e @@ -187,7 +203,7 @@ func (ec *etherClient) PeerCount(ctx context.Context) (ret1 uint64, err error) { } func (ec *etherClient) BlockReceipts(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (ret1 []*types.Receipt, err error) { - err = ec.withBackoff(ctx, "BlockReceipts()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "BlockReceipts", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.BlockReceipts(ctx, blockNrOrHash) ret1 = r1 return e @@ -196,7 +212,7 @@ func (ec *etherClient) BlockReceipts(ctx context.Context, blockNrOrHash rpc.Bloc } func (ec *etherClient) HeaderByHash(ctx context.Context, hash common.Hash) (ret1 *types.Header, err error) { - err = ec.withBackoff(ctx, "HeaderByHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "HeaderByHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.HeaderByHash(ctx, hash) ret1 = r1 return e @@ -205,7 +221,7 @@ func (ec *etherClient) HeaderByHash(ctx context.Context, hash common.Hash) (ret1 } func (ec *etherClient) HeaderByNumber(ctx context.Context, number *big.Int) (ret1 *types.Header, err error) { - err = ec.withBackoff(ctx, "HeaderByNumber()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "HeaderByNumber", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.HeaderByNumber(ctx, number) ret1 = r1 return e @@ -214,7 +230,7 @@ func (ec *etherClient) HeaderByNumber(ctx context.Context, number *big.Int) (ret } func (ec *etherClient) TransactionByHash(ctx context.Context, hash common.Hash) (ret1 *types.Transaction, ret2 bool, err error) { - err = ec.withBackoff(ctx, "TransactionByHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "TransactionByHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, r2, e := ethClient.TransactionByHash(ctx, hash) ret1 = r1 ret2 = r2 @@ -224,7 +240,7 @@ func (ec *etherClient) TransactionByHash(ctx context.Context, hash common.Hash) } func (ec *etherClient) TransactionSender(ctx context.Context, tx *types.Transaction, block common.Hash, index uint) (ret1 common.Address, err error) { - err = ec.withBackoff(ctx, "TransactionSender()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "TransactionSender", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.TransactionSender(ctx, tx, block, index) ret1 = r1 return e @@ -233,7 +249,7 @@ func (ec *etherClient) TransactionSender(ctx context.Context, tx *types.Transact } func (ec *etherClient) TransactionCount(ctx context.Context, blockHash common.Hash) (ret1 uint, err error) { - err = ec.withBackoff(ctx, "TransactionCount()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "TransactionCount", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.TransactionCount(ctx, blockHash) ret1 = r1 return e @@ -242,7 +258,7 @@ func (ec *etherClient) TransactionCount(ctx context.Context, blockHash common.Ha } func (ec *etherClient) TransactionInBlock(ctx context.Context, blockHash common.Hash, index uint) (ret1 *types.Transaction, err error) { - err = ec.withBackoff(ctx, "TransactionInBlock()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "TransactionInBlock", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.TransactionInBlock(ctx, blockHash, index) ret1 = r1 return e @@ -251,7 +267,7 @@ func (ec *etherClient) TransactionInBlock(ctx context.Context, blockHash common. } func (ec *etherClient) TransactionReceipt(ctx context.Context, txHash common.Hash) (ret1 *types.Receipt, err error) { - err = ec.withBackoff(ctx, "TransactionReceipt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "TransactionReceipt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.TransactionReceipt(ctx, txHash) if e != nil { return e @@ -268,7 +284,7 @@ func (ec *etherClient) TransactionReceipt(ctx context.Context, txHash common.Has } func (ec *etherClient) SyncProgress(ctx context.Context) (ret1 *ethereum.SyncProgress, err error) { - err = ec.withBackoff(ctx, "SyncProgress()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "SyncProgress", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.SyncProgress(ctx) ret1 = r1 return e @@ -277,7 +293,7 @@ func (ec *etherClient) SyncProgress(ctx context.Context) (ret1 *ethereum.SyncPro } func (ec *etherClient) SubscribeNewHead(ctx context.Context, ch chan<- *types.Header) (ret1 ethereum.Subscription, err error) { - err = ec.withBackoff(ctx, "SubscribeNewHead()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "SubscribeNewHead", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.SubscribeNewHead(ctx, ch) ret1 = r1 return e @@ -286,7 +302,7 @@ func (ec *etherClient) SubscribeNewHead(ctx context.Context, ch chan<- *types.He } func (ec *etherClient) NetworkID(ctx context.Context) (ret1 *big.Int, err error) { - err = ec.withBackoff(ctx, "NetworkID()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "NetworkID", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.NetworkID(ctx) ret1 = r1 return e @@ -295,7 +311,7 @@ func (ec *etherClient) NetworkID(ctx context.Context) (ret1 *big.Int, err error) } func (ec *etherClient) BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (ret1 *big.Int, err error) { - err = ec.withBackoff(ctx, "BalanceAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "BalanceAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.BalanceAt(ctx, account, blockNumber) ret1 = r1 return e @@ -304,7 +320,7 @@ func (ec *etherClient) BalanceAt(ctx context.Context, account common.Address, bl } func (ec *etherClient) BalanceAtHash(ctx context.Context, account common.Address, blockHash common.Hash) (ret1 *big.Int, err error) { - err = ec.withBackoff(ctx, "BalanceAtHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "BalanceAtHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.BalanceAtHash(ctx, account, blockHash) ret1 = r1 return e @@ -313,7 +329,7 @@ func (ec *etherClient) BalanceAtHash(ctx context.Context, account common.Address } func (ec *etherClient) StorageAt(ctx context.Context, account common.Address, key common.Hash, blockNumber *big.Int) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "StorageAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "StorageAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.StorageAt(ctx, account, key, blockNumber) ret1 = r1 return e @@ -322,7 +338,7 @@ func (ec *etherClient) StorageAt(ctx context.Context, account common.Address, ke } func (ec *etherClient) StorageAtHash(ctx context.Context, account common.Address, key common.Hash, blockHash common.Hash) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "StorageAtHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "StorageAtHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.StorageAtHash(ctx, account, key, blockHash) ret1 = r1 return e @@ -331,7 +347,7 @@ func (ec *etherClient) StorageAtHash(ctx context.Context, account common.Address } func (ec *etherClient) CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "CodeAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "CodeAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.CodeAt(ctx, account, blockNumber) ret1 = r1 return e @@ -340,7 +356,7 @@ func (ec *etherClient) CodeAt(ctx context.Context, account common.Address, block } func (ec *etherClient) CodeAtHash(ctx context.Context, account common.Address, blockHash common.Hash) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "CodeAtHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "CodeAtHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.CodeAtHash(ctx, account, blockHash) ret1 = r1 return e @@ -349,7 +365,7 @@ func (ec *etherClient) CodeAtHash(ctx context.Context, account common.Address, b } func (ec *etherClient) NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (ret1 uint64, err error) { - err = ec.withBackoff(ctx, "NonceAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "NonceAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.NonceAt(ctx, account, blockNumber) ret1 = r1 return e @@ -362,7 +378,7 @@ func (ec *etherClient) NonceAt(ctx context.Context, account common.Address, bloc } func (ec *etherClient) NonceAtHash(ctx context.Context, account common.Address, blockHash common.Hash) (ret1 uint64, err error) { - err = ec.withBackoff(ctx, "NonceAtHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "NonceAtHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.NonceAtHash(ctx, account, blockHash) ret1 = r1 return e @@ -375,7 +391,7 @@ func (ec *etherClient) NonceAtHash(ctx context.Context, account common.Address, } func (ec *etherClient) FilterLogs(ctx context.Context, q ethereum.FilterQuery) (ret1 []types.Log, err error) { - err = ec.withBackoff(ctx, "FilterLogs()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "FilterLogs", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.FilterLogs(ctx, q) ret1 = r1 return e @@ -388,7 +404,7 @@ func (ec *etherClient) FilterLogs(ctx context.Context, q ethereum.FilterQuery) ( } func (ec *etherClient) SubscribeFilterLogs(ctx context.Context, q ethereum.FilterQuery, ch chan<- types.Log) (ret1 ethereum.Subscription, err error) { - err = ec.withBackoff(ctx, "SubscribeFilterLogs()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "SubscribeFilterLogs", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.SubscribeFilterLogs(ctx, q, ch) ret1 = r1 return e @@ -397,7 +413,7 @@ func (ec *etherClient) SubscribeFilterLogs(ctx context.Context, q ethereum.Filte } func (ec *etherClient) PendingBalanceAt(ctx context.Context, account common.Address) (ret1 *big.Int, err error) { - err = ec.withBackoff(ctx, "PendingBalanceAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "PendingBalanceAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.PendingBalanceAt(ctx, account) ret1 = r1 return e @@ -406,7 +422,7 @@ func (ec *etherClient) PendingBalanceAt(ctx context.Context, account common.Addr } func (ec *etherClient) PendingStorageAt(ctx context.Context, account common.Address, key common.Hash) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "PendingStorageAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "PendingStorageAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.PendingStorageAt(ctx, account, key) ret1 = r1 return e @@ -415,7 +431,7 @@ func (ec *etherClient) PendingStorageAt(ctx context.Context, account common.Addr } func (ec *etherClient) PendingCodeAt(ctx context.Context, account common.Address) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "PendingCodeAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "PendingCodeAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.PendingCodeAt(ctx, account) ret1 = r1 return e @@ -424,7 +440,7 @@ func (ec *etherClient) PendingCodeAt(ctx context.Context, account common.Address } func (ec *etherClient) PendingNonceAt(ctx context.Context, account common.Address) (ret1 uint64, err error) { - err = ec.withBackoff(ctx, "PendingNonceAt()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "PendingNonceAt", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.PendingNonceAt(ctx, account) ret1 = r1 return e @@ -433,7 +449,7 @@ func (ec *etherClient) PendingNonceAt(ctx context.Context, account common.Addres } func (ec *etherClient) PendingTransactionCount(ctx context.Context) (ret1 uint, err error) { - err = ec.withBackoff(ctx, "PendingTransactionCount()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "PendingTransactionCount", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.PendingTransactionCount(ctx) ret1 = r1 return e @@ -442,7 +458,7 @@ func (ec *etherClient) PendingTransactionCount(ctx context.Context) (ret1 uint, } func (ec *etherClient) CallContract(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "CallContract()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "CallContract", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.CallContract(ctx, msg, blockNumber) ret1 = r1 return e @@ -451,7 +467,7 @@ func (ec *etherClient) CallContract(ctx context.Context, msg ethereum.CallMsg, b } func (ec *etherClient) CallContractAtHash(ctx context.Context, msg ethereum.CallMsg, blockHash common.Hash) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "CallContractAtHash()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "CallContractAtHash", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.CallContractAtHash(ctx, msg, blockHash) ret1 = r1 return e @@ -460,7 +476,7 @@ func (ec *etherClient) CallContractAtHash(ctx context.Context, msg ethereum.Call } func (ec *etherClient) PendingCallContract(ctx context.Context, msg ethereum.CallMsg) (ret1 []byte, err error) { - err = ec.withBackoff(ctx, "PendingCallContract()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "PendingCallContract", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.PendingCallContract(ctx, msg) ret1 = r1 return e @@ -469,7 +485,7 @@ func (ec *etherClient) PendingCallContract(ctx context.Context, msg ethereum.Cal } func (ec *etherClient) SuggestGasPrice(ctx context.Context) (ret1 *big.Int, err error) { - err = ec.withBackoff(ctx, "SuggestGasPrice()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "SuggestGasPrice", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.SuggestGasPrice(ctx) ret1 = r1 return e @@ -478,7 +494,7 @@ func (ec *etherClient) SuggestGasPrice(ctx context.Context) (ret1 *big.Int, err } func (ec *etherClient) SuggestGasTipCap(ctx context.Context) (ret1 *big.Int, err error) { - err = ec.withBackoff(ctx, "SuggestGasTipCap()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "SuggestGasTipCap", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.SuggestGasTipCap(ctx) ret1 = r1 return e @@ -487,7 +503,7 @@ func (ec *etherClient) SuggestGasTipCap(ctx context.Context) (ret1 *big.Int, err } func (ec *etherClient) FeeHistory(ctx context.Context, blockCount uint64, lastBlock *big.Int, rewardPercentiles []float64) (ret1 *ethereum.FeeHistory, err error) { - err = ec.withBackoff(ctx, "FeeHistory()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "FeeHistory", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles) ret1 = r1 return e @@ -496,7 +512,7 @@ func (ec *etherClient) FeeHistory(ctx context.Context, blockCount uint64, lastBl } func (ec *etherClient) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (ret1 uint64, err error) { - err = ec.withBackoff(ctx, "EstimateGas()", func(ctx context.Context, ethClient *ethclient.Client) error { + err = ec.withBackoff(ctx, "EstimateGas", func(ctx context.Context, ethClient *ethclient.Client) error { r1, e := ethClient.EstimateGas(ctx, msg) ret1 = r1 return e @@ -505,7 +521,7 @@ func (ec *etherClient) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (r } func (ec *etherClient) SendTransaction(ctx context.Context, tx *types.Transaction) (err error) { - return ec.withBackoff(ctx, "SendTransaction()", func(ctx context.Context, ethClient *ethclient.Client) error { + return ec.withBackoff(ctx, "SendTransaction", func(ctx context.Context, ethClient *ethclient.Client) error { return ethClient.SendTransaction(ctx, tx) }) } diff --git a/etherclient/mocks/mock_client.go b/etherclient/mocks/mock_client.go index 2720f35..cf986cf 100644 --- a/etherclient/mocks/mock_client.go +++ b/etherclient/mocks/mock_client.go @@ -1192,6 +1192,18 @@ func (mr *MockEtherClientMockRecorder) SendTransaction(ctx, tx interface{}) *gom return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendTransaction", reflect.TypeOf((*MockEtherClient)(nil).SendTransaction), ctx, tx) } +// SetMetricsHandler mocks base method. +func (m *MockEtherClient) SetMetricsHandler(h func(string, string)) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetMetricsHandler", h) +} + +// SetMetricsHandler indicates an expected call of SetMetricsHandler. +func (mr *MockEtherClientMockRecorder) SetMetricsHandler(h interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetMetricsHandler", reflect.TypeOf((*MockEtherClient)(nil).SetMetricsHandler), h) +} + // SetRetryInterval mocks base method. func (m *MockEtherClient) SetRetryInterval(d time.Duration) { m.ctrl.T.Helper()