@@ -3,6 +3,7 @@ package listener
33import (
44 "context"
55 "math/big"
6+ "time"
67
78 "github.com/KyberNetwork/evmlistener/pkg/block"
89 "github.com/KyberNetwork/evmlistener/pkg/encoder"
@@ -13,8 +14,13 @@ import (
1314 "go.uber.org/zap"
1415)
1516
17+ type HandlerConfig struct {
18+ BlockSlowWarningThreshold time.Duration
19+ }
20+
1621// Handler ...
1722type Handler struct {
23+ cfg HandlerConfig
1824 topic string
1925
2026 evmClient evmclient.IClient
@@ -27,7 +33,7 @@ type Handler struct {
2733
2834// NewHandler ...
2935func NewHandler (
30- l * zap.SugaredLogger , topic string , evmClient evmclient.IClient ,
36+ cfg HandlerConfig , l * zap.SugaredLogger , topic string , evmClient evmclient.IClient ,
3137 blockKeeper block.Keeper , publisher publisher.Publisher , encoder encoder.Encoder ,
3238 options ... Option ,
3339) * Handler {
@@ -37,6 +43,7 @@ func NewHandler(
3743 }
3844
3945 return & Handler {
46+ cfg : cfg ,
4047 topic : topic ,
4148 evmClient : evmClient ,
4249 blockKeeper : blockKeeper ,
@@ -212,6 +219,11 @@ func (h *Handler) handleNewBlock(ctx context.Context, b types.Block) error {
212219 )
213220
214221 log .Infow ("Handling new block" )
222+ now := time .Now ()
223+ blockTime := time .Unix (int64 (b .Timestamp ), 0 )
224+ if now .Sub (blockTime ) > h .cfg .BlockSlowWarningThreshold {
225+ log .Warnw ("Block is slow" , "blockTime" , blockTime )
226+ }
215227
216228 isReorg , err := h .blockKeeper .IsReorg (b )
217229 if err != nil {
0 commit comments