Repository navigation
Nuthatch 5.8.2 keeps a seal-direct backfill on a dense chain inside the per-cursor memory budget. There
is no storage migration, and no nest's NID, registry hash or sealed segment changes.
Memory on a dense chain
Peak RSS of bench backfill --seal-direct over 30,000 blocks, against a local node serving N
transactions per block, macOS release build:
| before | after | |
|---|---|---|
blocks table, 3,000 txs/block, --concurrency 8 |
3,078 to 3,090 MiB | 238 to 245 MiB |
blocks table, 1,000 txs/block, --concurrency 8 |
1,010 to 1,039 MiB | 224 to 245 MiB |
events only, 3,000 txs/block, --concurrency 8 |
1,539 to 1,893 MiB | 888 to 940 MiB |
- A header fetched without transaction bodies keeps only its transaction count, not every hash, so a
window of headers no longer grows with block density (#2309). Sealed blocks segments are
byte-identical before and after. - Header and
eth_callbatch responses are read up to 8 MiB. A batch past that is split in half at
once, without a retry at the same size, a failover or a cooldown for the endpoint, and the width
that fit is kept for later windows. A getLogs response past its cap follows the same rule (#2227).
bench backfill names a pool that never answers
bench backfill checks that some endpoint answers before it starts. If none does within 60
seconds, it stops and names each one, redacted to scheme and host; before, a seal-direct bench
against a closed port retried forever (#2310). dev is unchanged: it keeps a dead pool's API up and
reports stalled in /ready.
Compatibility and upgrade
Replace the binary and restart. A 5.8.1 store is used as it is.