Skip to content

Commit 7db95ce

Browse files
committed
Only print log once, 2 minutes after startup
We don't want to spam users' logs with this message, so this just waits 2 minutes and prints the log message once (if there are any throttles).
1 parent a7fdd7a commit 7db95ce

File tree

2 files changed

+24
-26
lines changed

2 files changed

+24
-26
lines changed

core/node/libp2p/rcmgr_logging.go

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import (
1515
)
1616

1717
type loggingResourceManager struct {
18-
clock clock.Clock
19-
logger *zap.SugaredLogger
20-
delegate network.ResourceManager
21-
logInterval time.Duration
18+
clock clock.Clock
19+
logger *zap.SugaredLogger
20+
delegate network.ResourceManager
21+
logAfter time.Duration
2222

2323
mut sync.Mutex
2424
limitExceededErrs uint64
@@ -33,26 +33,24 @@ type loggingScope struct {
3333
var _ network.ResourceManager = (*loggingResourceManager)(nil)
3434

3535
func (n *loggingResourceManager) start(ctx context.Context) {
36-
logInterval := n.logInterval
37-
if logInterval == 0 {
38-
logInterval = 10 * time.Second
36+
logAfter := n.logAfter
37+
if logAfter == 0 {
38+
logAfter = 2 * time.Minute
3939
}
40-
ticker := n.clock.Ticker(logInterval)
40+
timer := n.clock.Timer(logAfter)
4141
go func() {
42-
defer ticker.Stop()
43-
for {
44-
select {
45-
case <-ticker.C:
46-
n.mut.Lock()
47-
errs := n.limitExceededErrs
48-
n.limitExceededErrs = 0
49-
n.mut.Unlock()
50-
if errs != 0 {
51-
n.logger.Errorf("Resource limits were exceeded %d times, consider inspecting logs and raising the resource manager limits.", errs)
52-
}
53-
case <-ctx.Done():
54-
return
42+
defer timer.Stop()
43+
select {
44+
case <-timer.C:
45+
n.mut.Lock()
46+
errs := n.limitExceededErrs
47+
n.limitExceededErrs = 0
48+
n.mut.Unlock()
49+
if errs != 0 {
50+
n.logger.Errorf("Resource limits were exceeded %d times shortly after startup, consider inspecting logs and raising the resource manager limits.", errs)
5551
}
52+
case <-ctx.Done():
53+
return
5654
}
5755
}()
5856
}

core/node/libp2p/rcmgr_logging_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ func TestLoggingResourceManager(t *testing.T) {
2525
oCore, oLogs := observer.New(zap.ErrorLevel)
2626
oLogger := zap.New(oCore)
2727
lrm := &loggingResourceManager{
28-
clock: clock,
29-
logger: oLogger.Sugar(),
30-
delegate: rm,
31-
logInterval: 1 * time.Second,
28+
clock: clock,
29+
logger: oLogger.Sugar(),
30+
delegate: rm,
31+
logAfter: 1 * time.Second,
3232
}
3333

3434
// 2 of these should result in resource limit exceeded errors and subsequent log messages
@@ -51,7 +51,7 @@ func TestLoggingResourceManager(t *testing.T) {
5151
if oLogs.Len() == 0 {
5252
continue
5353
}
54-
require.Equal(t, "Resource limits were exceeded 2 times, consider inspecting logs and raising the resource manager limits.", oLogs.All()[0].Message)
54+
require.Equal(t, "Resource limits were exceeded 2 times shortly after startup, consider inspecting logs and raising the resource manager limits.", oLogs.All()[0].Message)
5555
return
5656
}
5757
}

0 commit comments

Comments
 (0)