go-ethereum/trie
CPerezz 69b330d98e
trie: fix nodeHeight over-estimate so height-3 branches are archived (#577)
The nodeHeight *fullNode case returned maxHeight+1 once the running max
height reached maxHeight via one child: the `if maxH+1 > maxHeight` guard
fired on the next hashNode child, reporting a genuine height-3 branch as
height 4. With the `height == 3` archival predicate this made dense,
branch-heavy tries (notably the account trie, whose height-3 nodes are
all multi-child branches) archive nothing, while only sparse,
extension-heavy storage tries archived anything.

On a jochemnet shadowfork (path scheme, ~379 GB live KV) a 15.5h `archive
generate` archived only 122,340 subtrees / 16.6 MB, and the account trie
archived nothing (count=0), with zero read/collection failures in the
log -- confirming a height computation bug rather than a read-path issue.

Replace the running-max guard with a depth-budget guard mirroring the
already-correct *shortNode case; keep the post-update `maxH > maxHeight`
exceeded check so recursion and raw-DB reads stay bounded.

Add trie/archiver_test.go: a height-3 root branch probes as height 3
(it returned 4 before this change).

Co-authored-by: CPerezz <claude.ai.monorail916@passmail.net>
2026-06-19 10:43:54 +02:00
..
archive trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
bintrie core: implement optimized bal execution path 2026-06-01 18:41:58 -04:00
transitiontrie core: implement optimized bal execution path 2026-06-01 18:41:58 -04:00
trienode cmd, core, eth, triedb/pathdb: track node origins in the path database (#32418) 2025-09-05 10:37:05 +08:00
archiver.go trie: fix nodeHeight over-estimate so height-3 branches are archived (#577) 2026-06-19 10:43:54 +02:00
archiver_test.go trie: fix nodeHeight over-estimate so height-3 branches are archived (#577) 2026-06-19 10:43:54 +02:00
bytepool.go core/types, trie: reduce allocations in derivesha (#30747) 2025-10-01 10:05:49 +02:00
committer.go trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
database_test.go trie: no need to store preimage if not enabled (#32012) 2025-06-13 15:04:24 +08:00
encoding.go trie: reduce allocations in stacktrie (#30743) 2025-01-23 10:17:12 +01:00
encoding_test.go trie: reduce allocs in recHash (#27770) 2023-08-18 22:41:19 +02:00
errors.go all: fix various typos (#29600) 2024-04-23 13:09:42 +03:00
expired_node.go trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
expired_node_test.go trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
hasher.go trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
inspect.go cmd/geth: add inspect trie tool to analysis trie storage (#28892) 2026-02-24 10:56:00 -07:00
inspect_test.go cmd/geth: add inspect trie tool to analysis trie storage (#28892) 2026-02-24 10:56:00 -07:00
iterator.go trie: add sub-trie iterator support (#32520) 2025-09-17 22:07:02 +08:00
iterator_test.go trie: align AllFFPrefix test assertion and message (#32719) 2025-09-24 10:36:56 +08:00
levelstats.go core, miner, trie: relocate witness stats (#34106) 2026-03-27 17:06:46 +01:00
levelstats_test.go cmd/geth: add inspect trie tool to analysis trie storage (#28892) 2026-02-24 10:56:00 -07:00
list_hasher.go core/types, trie: reduce allocations in derivesha (#30747) 2025-10-01 10:05:49 +02:00
node.go trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
node_enc.go trie: reduce the memory allocation in trie hashing (#31902) 2025-08-01 10:23:23 +08:00
node_test.go trie: fix flaky test (#33711) 2026-01-29 17:22:15 +08:00
proof.go trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
proof_test.go trie: fix TestOneElementProof expected value message (#32738) 2025-09-24 18:57:01 -06:00
secure_trie.go core: implement optimized bal execution path 2026-06-01 18:41:58 -04:00
secure_trie_test.go core/state, eth/protocols, trie, triedb/pathdb: remove unused error from trie Commit (#29869) 2024-06-12 12:23:16 +03:00
stacktrie.go core/types, trie: reduce allocations in derivesha (#30747) 2025-10-01 10:05:49 +02:00
stacktrie_fuzzer_test.go trie: do not expect ordering in stacktrie during fuzzing (#31170) 2025-02-18 10:48:42 +08:00
stacktrie_test.go trie: reduce allocations in stacktrie (#30743) 2025-01-23 10:17:12 +01:00
sync.go trie: cleaner array concatenation (#32756) 2025-10-02 17:32:20 +02:00
sync_test.go core, trie, triedb: minor changes from snapshot integration (#30599) 2024-10-18 17:06:31 +02:00
tracer.go core: implement optimized bal execution path 2026-06-01 18:41:58 -04:00
tracer_test.go trie, core/state: introduce trie Prefetch for optimizing preload (#32134) 2025-08-20 21:45:27 +08:00
trie.go trie, cmd/geth: add archiver command and on-demand resurrection 2026-06-12 11:36:29 +02:00
trie_id.go all: update license comments and AUTHORS (#31133) 2025-02-05 23:01:17 +01:00
trie_reader.go trie/bintrie: add eip7864 binary trees and run its tests (#32365) 2025-09-01 21:06:51 +08:00
trie_test.go core: implement optimized bal execution path 2026-06-01 18:41:58 -04:00