diff --git a/etherclient/backoff.go b/etherclient/backoff.go index d5ab242..3bd881b 100644 --- a/etherclient/backoff.go +++ b/etherclient/backoff.go @@ -53,23 +53,23 @@ func (ec *etherClient) withBackoff( wrapper := ec.provider.Provide() ethClient := wrapper.Client tCtx, cancel := context.WithTimeout(ctx, backoffContextTimeout) - err := operation(tCtx, ethClient) + opErr := 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) + u, parseErr := url.Parse(rpcUrl) + if parseErr == nil { + ec.metricsHandler(u.Host, method, opErr) } } - if err != nil { + if opErr != nil { // Move onto the next provider. ec.provider.Next() } - return handleRetryErr(ctx, method, err) + return handleRetryErr(ctx, method, opErr) }, bo) if err != nil { logrus.WithError(err).WithField("method", method).Error("retry failed with error") diff --git a/etherclient/client.go b/etherclient/client.go index e282517..eaa6cd9 100644 --- a/etherclient/client.go +++ b/etherclient/client.go @@ -57,7 +57,7 @@ type EtherClient interface { Extras SetRetryInterval(d time.Duration) - SetMetricsHandler(h func(rpcHost, clientMethod string)) + SetMetricsHandler(h func(rpcHost, clientMethod string, err error)) } type Extras interface { @@ -85,7 +85,7 @@ type etherClient struct { provider provider.Provider[*ethClientWrapper] retryInterval time.Duration - metricsHandler func(rpcHost, clientMethod string) + metricsHandler func(rpcHost, clientMethod string, err error) } var _ EtherClient = ðerClient{} @@ -121,7 +121,7 @@ func (ec *etherClient) SetRetryInterval(d time.Duration) { ec.retryInterval = d } -func (ec *etherClient) SetMetricsHandler(h func(rpcHost, clientMethod string)) { +func (ec *etherClient) SetMetricsHandler(h func(rpcHost, clientMethod string, err error)) { ec.metricsHandler = h } diff --git a/etherclient/mocks/mock_client.go b/etherclient/mocks/mock_client.go index cf986cf..325dac2 100644 --- a/etherclient/mocks/mock_client.go +++ b/etherclient/mocks/mock_client.go @@ -1193,7 +1193,7 @@ func (mr *MockEtherClientMockRecorder) SendTransaction(ctx, tx interface{}) *gom } // SetMetricsHandler mocks base method. -func (m *MockEtherClient) SetMetricsHandler(h func(string, string)) { +func (m *MockEtherClient) SetMetricsHandler(h func(string, string, error)) { m.ctrl.T.Helper() m.ctrl.Call(m, "SetMetricsHandler", h) }