Skip to content

Commit 8f5f66d

Browse files
authored
chore: add slow block log (#124)
1 parent dc3484a commit 8f5f66d

File tree

5 files changed

+25
-5
lines changed

5 files changed

+25
-5
lines changed

internal/app/app.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ func NewListener(c *cli.Context) (*listener.Listener, error) {
129129
msgEncoder := getMessageEncoder()
130130

131131
l.Infow("Setup handler", "topic", topic)
132-
handler := listener.NewHandler(l, topic, httpEVMClient, blockKeeper, publisher, msgEncoder,
132+
handler := listener.NewHandler(listener.HandlerConfig{BlockSlowWarningThreshold: blockSlowWarningThresholdFlag.Value},
133+
l, topic, httpEVMClient, blockKeeper, publisher, msgEncoder,
133134
listener.WithEventLogs(nil, nil))
134135

135136
l.Infow("Setup listener")

internal/app/flags.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ var (
4949
Value: 24 * time.Second, //nolint:gomnd
5050
Usage: "Interval time for running santity check, default: 24s",
5151
}
52+
blockSlowWarningThresholdFlag = &cli.DurationFlag{
53+
Name: "block-slow-warning-threshold",
54+
EnvVars: []string{"BLOCK_SLOW_WARNING_THRESHOLD"},
55+
Value: 5 * time.Minute, //nolint:gomnd
56+
Usage: "Threshold for warning slow block",
57+
}
5258

5359
sentryDSNFlag = &cli.StringFlag{
5460
Name: "sentry-dsn",
@@ -228,6 +234,7 @@ func NewFlags() []cli.Flag {
228234
rpcRequestTimeoutFlag,
229235
sanityNodeRPCFlag,
230236
sanityCheckIntervalFlag,
237+
blockSlowWarningThresholdFlag,
231238
}
232239
flags = append(flags, NewSentryFlags()...)
233240
flags = append(flags, NewRedisFlags()...)

pkg/listener/handler.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package listener
33
import (
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 ...
1722
type Handler struct {
23+
cfg HandlerConfig
1824
topic string
1925

2026
evmClient evmclient.IClient
@@ -27,7 +33,7 @@ type Handler struct {
2733

2834
// NewHandler ...
2935
func 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 {

pkg/listener/handler_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ func (ts *HandlerTestSuite) SetupTest() {
3636
ts.blockKeeper = block.NewBaseBlockKeeper(32)
3737
ts.publisher = NewPublisherMock(1000)
3838
ts.encoder = encoder.NewJSONEncoder()
39-
ts.handler = NewHandler(zap.S(), "test-topic", ts.evmClient, ts.blockKeeper, ts.publisher, ts.encoder)
39+
ts.handler = NewHandler(HandlerConfig{}, zap.S(), "test-topic", ts.evmClient, ts.blockKeeper, ts.publisher, ts.encoder)
4040
}
4141

4242
func (ts *HandlerTestSuite) TestInit() {
4343
ts.evmClient.SetHead(34)
4444
blockKeeper := NewBlockKeeperMock(32)
45-
handler := NewHandler(zap.S(), "test-topic", ts.evmClient, blockKeeper, ts.publisher, ts.encoder)
45+
handler := NewHandler(HandlerConfig{}, zap.S(), "test-topic", ts.evmClient, blockKeeper, ts.publisher, ts.encoder)
4646

4747
// Init handler without saved data.
4848
err := handler.Init(context.Background())

pkg/listener/listener_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func (ts *ListenerTestSuite) SetupTest() {
3636
ts.publisher = NewPublisherMock(1000)
3737
ts.encoder = encoder.NewJSONEncoder()
3838
blockKeeper := block.NewBaseBlockKeeper(32)
39-
handler := NewHandler(zap.S(), "test-topic", ts.evmClient, blockKeeper, ts.publisher, ts.encoder)
39+
handler := NewHandler(HandlerConfig{}, zap.S(), "test-topic", ts.evmClient, blockKeeper, ts.publisher, ts.encoder)
4040
ts.listener = New(zap.S(), evmClient, evmClient, handler, nil, 0)
4141
}
4242

0 commit comments

Comments
 (0)