diff options
| author | Adam Soltys <[email protected]> | 2026-06-06 21:12:17 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-06-06 21:12:17 -0700 |
| commit | 7b71c96b5ed9728c63e8fcbb7b2a8bb7155ec7af (patch) | |
| tree | 338a679979c118452ee56667ad4fc90bf4e608ba /lib/logging.js.map | |
| parent | 10284aa1b8868012829c0b643def73ee55e4822d (diff) | |
| download | coinos-server-7b71c96b5ed9728c63e8fcbb7b2a8bb7155ec7af.tar.gz coinos-server-7b71c96b5ed9728c63e8fcbb7b2a8bb7155ec7af.zip | |
lightning: watchdog only recycles on real backlog, not normal idle
The zombie-listener watchdog (bd1ece38) treated "waitanyinvoice blocked > 5min
while cl is alive" as a stall — but that's NORMAL during quiet periods, so it
false-fired and needlessly recycled the cl listen socket every few minutes
(~26x in 6h on 2026-06-07). Receives still worked, but it was churn + noise and
would mask a genuine zombie.
Fix: a blocked long-poll is only a zombie if cl actually has a paid invoice the
listener isn't picking up. When blocked past the threshold, probe cl on the MAIN
socket with waitanyinvoice(pay_index, 2s server-side timeout): if it returns an
invoice there's a real backlog the wedged listener missed -> recycle; if it
times out (CLN code 904 = nothing waiting) the listener is just idle and healthy
-> leave it alone. Only recycle on a confirmed backlog.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'lib/logging.js.map')
0 files changed, 0 insertions, 0 deletions
