util/limiter: don't panic when dumping a new Limiter

Fixes #18439

Signed-off-by: Josh Bleecher Snyder <josharian@gmail.com>
pull/16176/merge
Josh Bleecher Snyder 2 weeks ago committed by Brad Fitzpatrick
parent 2cb86cf65e
commit 6dc0bd834c

@ -187,6 +187,9 @@ func (lm *Limiter[K]) collectDump(now time.Time) []dumpEntry[K] {
lm.mu.Lock()
defer lm.mu.Unlock()
if lm.cache == nil {
return nil
}
ret := make([]dumpEntry[K], 0, lm.cache.Len())
lm.cache.ForEach(func(k K, v *bucket) {
lm.updateBucketLocked(v, now) // so stats are accurate

@ -5,6 +5,7 @@ package limiter
import (
"bytes"
"io"
"strings"
"testing"
"time"
@ -175,6 +176,10 @@ func TestDumpHTML(t *testing.T) {
}
}
func TestDumpHTMLEmpty(t *testing.T) {
new(Limiter[string]).DumpHTML(io.Discard, false) // should not panic
}
func allowed(t *testing.T, limiter *Limiter[string], key string, count int, now time.Time) {
t.Helper()
for i := range count {

Loading…
Cancel
Save