You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Non-validator crashes 6-12x/day: panic 'too many blocks to request' in nv_stream_forward_client_blocks (binary 102/103) #160
Since the binary index 102 rollout (2026-07-24), our Mainnet non-validator crashes 6–12×/day with a panic in nv_stream_forward_client_blocks:
hl-node @@ tokio_spawn_forever crashing process name=nv_stream_forward_client_blocks
Some("crashing process because tokio_spawn_forever ended, name=nv_stream_forward_client_blocks err=tokio_spawn_forever error task 53 panicked with message \"too many blocks to request\"")
hl-node @@ client_block_reader error, ending task: Bounded TrySend error: closed @@ [tcp_stream.peer_addr(): Ok(63.143.43.202:4001)]
The visor then reports visor child in bad state, restarting @@ [child_stuck: true] and restarts the child. Each cycle costs ~15–25 minutes of stream output (state-sync + client-block backfill), i.e. scattered gaps in node_fills / node_order_statuses / node_raw_book_diffs.
Setup
hl-node 27b9f0db1df4eb807dddbb1c44ef28d4485e916f | 2026-07-25 13:31:14 +0800 (visor-managed, currently binary index 103)
Gossip ports 4001/4002 reachable; --serve-evm-rpc NOT enabled
Observations
The panic appears to fire during post-restart catch-up when the EVM client-block backfill span exceeds an internal cap ("too many blocks to request"), which crashes the child — making the next restart's backfill span even larger. Two crashes 60–80 min apart are common once it starts.
The Bounded TrySend error: closed lines from client_block_reader (peers 63.143.43.0/24:4001) look like downstream symptoms of the forwarder task dying, not the cause.
We do not consume EVM data on this node at all — is there a supported way for a non-validator to opt out of client-block forwarding, or to raise/paginate the backfill request cap?
Disk/CPU are exonerated on our side (sar: await 5–33ms, steal <2%, iowait <1.4% at crash times). We rule out the local I/O regression we did have earlier (fixed).
Questions
Is this panic known, and is a fix queued for an upcoming binary index?
Is there a recommended mitigation (gossip config overrides, EVM state reset, request-cap tuning) for non-validators hitting this?
Happy to provide longer redacted journal excerpts.
Update: the panic persists on binary 104 (picked up via hl-visor auto-update on 2026-08-01). Three occurrences in the first ~32h on 104, all identical to the original report:
thread 'tokio-runtime-worker' panicked at /home/ubuntu/hl/code_Mainnet/node/src/nv_stream.rs:311:17:
too many blocks to request
Timestamps (UTC): 2026-08-01 17:49, 2026-08-02 04:18, 2026-08-02 05:49. Same flags as the original report (non-validator, --write-raw-book-diffs etc.). Happy to provide additional diagnostics if useful.
Update — escalation data on binary 104: the nv_stream.rs:311 panic (too many blocks to request) is now firing 10-12×/day on our non-validator mainnet node (was ~2-3/day on 08-02). The pattern is self-compounding: any child restart that leaves a wide client-block backfill span trips the cap, which forces another restart with a wider span. Once the node falls behind for any reason, this cap turns one restart into a restart loop. Is a cap raise or chunked backfill request planned? Happy to provide full stderr samples.
Activity
coreluxAI commentedon Aug 2, 2026
Update: the panic persists on binary 104 (picked up via hl-visor auto-update on 2026-08-01). Three occurrences in the first ~32h on 104, all identical to the original report:
Timestamps (UTC): 2026-08-01 17:49, 2026-08-02 04:18, 2026-08-02 05:49. Same flags as the original report (non-validator, --write-raw-book-diffs etc.). Happy to provide additional diagnostics if useful.
coreluxAI commentedon Aug 6, 2026
Update — escalation data on binary 104: the nv_stream.rs:311 panic (
too many blocks to request) is now firing 10-12×/day on our non-validator mainnet node (was ~2-3/day on 08-02). The pattern is self-compounding: any child restart that leaves a wide client-block backfill span trips the cap, which forces another restart with a wider span. Once the node falls behind for any reason, this cap turns one restart into a restart loop. Is a cap raise or chunked backfill request planned? Happy to provide full stderr samples.