go-ethereum/core
Bosul Mun 5c253e557e
core/rawdb: prevent truncateHead from returning an error for empty tables (#35258)
This PR is related to the recent bug reported in #35210.

While trying to reproduce the error, I found that when the head state is
missing (e.g. unclean shutdown), we attempt to truncate the head to the
most recent block with state across all chain freezer tables.

However, for newly added tables such as the bal table, both the head and
tail are initialized to the minimum head of the existing chain freezer
tables. As a result, the `truncateHead` fails with the “truncate below
tail” error.

This PR fixes the issue by resetting newly added empty tables with
`items` as the tail when `truncateHead(items)` is called on them.
2026-07-01 09:43:11 +08:00
..
filtermaps all: fix all typos, as reported by crates-ci/typos (#35008) 2026-06-10 18:50:51 +02:00
forkid params: set osaka and BPO1 & BPO2 mainnet dates (#33063) 2025-11-03 17:41:22 +01:00
history cmd/geth: add Prague pruning points for hoodi (#34714) 2026-04-14 14:58:27 +02:00
overlay cmd, core, trie, triedb: split CachingDB into merkle + binary dbs. (#34700) 2026-04-17 08:55:54 +08:00
rawdb core/rawdb: prevent truncateHead from returning an error for empty tables (#35258) 2026-07-01 09:43:11 +08:00
state core/state: fix account prefetching for absent accounts (#35256) 2026-06-30 09:03:12 +08:00
stateless eth/catalyst: implement engine_newPayloadWithWitnessV5 and use witness field spec ordering (#35009) 2026-05-21 21:00:57 +02:00
tracing core/vm: implements EIP-8037 spec change (#35173) 2026-06-23 14:31:24 +08:00
txpool core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
types core: implement EIP-8246 (#35219) 2026-06-30 08:58:43 +08:00
vm core: implement EIP-8246 (#35219) 2026-06-30 08:58:43 +08:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bal_test.go core: implement EIP-8246 (#35219) 2026-06-30 08:58:43 +08:00
bench_test.go core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
bintrie_witness_test.go core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
block_validator.go core/types/bal: add additional static validation for access lists (#34967) 2026-05-20 09:35:28 +08:00
block_validator_test.go eth/catalyst: add initial OpenTelemetry tracing for newPayload (#33521) 2026-02-17 17:08:57 +01:00
blockchain.go core: add debug log and repair the missing hash and receipts (#35190) 2026-06-23 14:46:38 +08:00
blockchain_insert.go core: remove unused peek function in insertIterator (#33155) 2025-11-12 15:30:16 +08:00
blockchain_reader.go eth/protocols/eth: implement eth71 bal response (#34879) 2026-05-19 20:25:13 +02:00
blockchain_repair_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00
blockchain_sethead_test.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
blockchain_snapshot_test.go core: re-enable the legacy snapshot after sync (#35163) 2026-06-16 11:09:32 +08:00
blockchain_stats.go core: add code cache hit/miss meters (#34821) 2026-05-22 11:33:21 +08:00
blockchain_test.go all: fix all typos, as reported by crates-ci/typos (#35008) 2026-06-10 18:50:51 +02:00
chain_makers.go core: add slot number (#35036) 2026-05-26 12:27:07 +02:00
chain_makers_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00
dao_test.go all: fix all typos, as reported by crates-ci/typos (#35008) 2026-06-10 18:50:51 +02:00
eip2780_test.go core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
eip8037_test.go core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
eip8246_test.go core: implement EIP-8246 (#35219) 2026-06-30 08:58:43 +08:00
error.go core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
eth_transfer_logs_test.go core, core/vm: implement EIP-7708 (#33645) 2026-03-23 22:29:53 +08:00
events.go ethstats: report newPayload processing time to stats server (#33395) 2026-01-05 17:49:30 +01:00
evm.go core: implement EIP-8037, state creation gas cost increase (#33601) 2026-06-12 14:29:03 +02:00
gaspool.go core: implement EIP-8037, state creation gas cost increase (#33601) 2026-06-12 14:29:03 +02:00
gen_genesis.go core/vm: implement eip-7843: SLOTNUM (#33589) 2026-02-26 13:53:46 +01:00
genesis.go core: implement EIP-8282: Builder Execution Requests (#35175) 2026-06-25 22:12:07 +08:00
genesis_alloc.go params: add hoodi testnet definition (#31406) 2025-03-18 12:07:49 +01:00
genesis_test.go accounts/abi, core, metrics, miner, rlp, signer, triedb: fix all incorrect variable usages in error strings (#35121) 2026-06-08 12:39:10 +02:00
headerchain.go core/rawdb: reduce allocations in rawdb.ReadHeaderNumber (#31913) 2025-07-15 15:48:36 +02:00
headerchain_test.go core/state, core/tracing: new state update hook (#33490) 2026-01-08 11:07:19 +08:00
jumpdest.go core/vm: global cache for jumpdest bitmaps (#34850) 2026-05-27 09:01:05 +02:00
mkalloc.go accounts, cmd/geth, core: close opened files (#29598) 2024-04-30 15:47:21 +02:00
rlp_test.go crypto/keccak: vendor in golang.org/x/crypto/sha3 (#33323) 2026-02-03 14:55:27 -07:00
sender_cacher.go core: use sync.Once for SenderCacher initialization (#31029) 2025-01-16 14:36:45 +01:00
state_prefetcher.go core/vm: global cache for jumpdest bitmaps (#34850) 2026-05-27 09:01:05 +02:00
state_processor.go core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
state_processor_test.go core/vm: implement eip-7843: SLOTNUM (#33589) 2026-02-26 13:53:46 +01:00
state_transition.go core: implement EIP-8246 (#35219) 2026-06-30 08:58:43 +08:00
state_transition_test.go core: implement EIP-2780 (#35212) 2026-06-29 11:04:30 +08:00
stateless.go all: fix all typos, as reported by crates-ci/typos (#35008) 2026-06-10 18:50:51 +02:00
txindexer.go core, core/txpool, eth: move subscriptions to constructor (#35048) 2026-06-01 08:13:59 +08:00
txindexer_test.go core/rawdb: integrate eradb backend for RPC (#31604) 2025-06-03 10:47:38 +02:00
types.go core/vm: global cache for jumpdest bitmaps (#34850) 2026-05-27 09:01:05 +02:00