Rebuild: a deadline per chunk; batches with a huge fragment
A worker waited on one chunk of a leased range for an hour (range 146477: five 15-minute stream timeouts, then the range took 63 s; 88 "stream: Peer disconnected" overnight). The silence timeout doesn't catch a reply that trickles: a chunk still coming in after NNTP_CHUNK_DEADLINE_SECONDS (300) is given up, its connection closed, and fetched again. The report names the oldest request in flight (range, chunk, age, bytes in) and counts deadlines. Batches failed with "Maximum call stack size exceeded" (8 overnight): Math.min(...segments) on a fragment with more segments than the stack takes arguments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e095232d89
commit
40aa78cda3
5 files changed
+52
-8
No files matched your search
@@ -37,6 +37,13 @@ export default {
|
||||
* the prefetcher nearly stopped. Data arrives within seconds otherwise.
|
||||
*/
|
||||
nntpTimeoutMs: env.get('NNTP_TIMEOUT_MS', 2 * 60 * 1000),
|
||||
/**
|
||||
* A chunk still coming in after this long is given up (its connection
|
||||
* closed) and fetched again: a reply that trickles never goes quiet long
|
||||
* enough for nntpTimeoutMs, and kept a worker waiting on one chunk for an
|
||||
* hour (LOG.md 2026-10-10 (2)). Chunks take 3–35 s.
|
||||
*/
|
||||
nntpChunkDeadlineMs: env.get('NNTP_CHUNK_DEADLINE_SECONDS', 5 * 60) * 1000,
|
||||
/**
|
||||
* A chunk not fetched after this long is asked again on another
|
||||
* connection; the first answer wins and the other connection is closed.
|
||||
|
||||
Reference in new issue
Block a user