diff options
| author | Mike O'Driscoll <mikeo@tailscale.com> | 2026-03-06 09:54:25 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-06 09:54:25 -0500 |
| commit | 3cc7b8530c7fd0dd069ebb5ec9863a8cf1e0deee (patch) | |
| tree | 15705b2125b429a8be7106e83d7ae9b962b06361 /control/controlhttp/controlhttpserver/controlhttpserver.go | |
| parent | 40858a61fe1c6a0e90add476e5c9aa8d366dfb24 (diff) | |
| download | tailscale-3cc7b8530c7fd0dd069ebb5ec9863a8cf1e0deee.tar.xz tailscale-3cc7b8530c7fd0dd069ebb5ec9863a8cf1e0deee.zip | |
prober: fix queuing delay probe txRecords overflow under high DERP server load (#18803)
The txRecords buffer had two compounding bugs that caused the
overflow guard to fire on every send tick under high DERP server load,
spamming logs at the full send rate (e.g. 100x/second).
First, int(packetTimeout.Seconds()) truncates fractional-second timeouts,
under-allocating the buffer. Second, the capacity was sized to exactly the
theoretical maximum number of in-flight records with no headroom,
and the expiry check used strict > rather than >=, so records at exactly
the timeout boundary were never evicted by applyTimeouts,
leaving len==cap on the very next tick.
Fixes tailscale/corp#37696
Signed-off-by: Mike O'Driscoll <mikeo@tailscale.com>
Diffstat (limited to 'control/controlhttp/controlhttpserver/controlhttpserver.go')
0 files changed, 0 insertions, 0 deletions
