go-ethereum/eth/protocols/snap
CPerezz c6f49c4708
eth/protocols/snap: add stateless peer cooldown for partial state mode
The statelessPeers map permanently blacklists peers that return empty
responses for the entire Sync() cycle. In partial state mode, the faster
account advancement (due to skipping storage/code for non-tracked
contracts) creates bursty request patterns that can trigger transient
empty responses. Combined with the permanent blacklist, this causes a
cascade where all peers get banned and sync stalls permanently.

Replace the permanent map[string]struct{} with map[string]time.Time to
track when each peer was marked. For partial state mode, peers are given
a 30-second cooldown instead of permanent banishment. After the cooldown
expires, the peer is eligible for task assignment again. Full sync mode
behavior is unchanged (permanent blacklist preserved).
2026-04-17 12:01:43 +02:00
..
discovery.go core, eth: split eth package, implement snap protocol (#21482) 2020-12-14 10:27:15 +01:00
gentrie.go eth/protocols/snap: cleanup dangling account trie nodes due to incomplete storage (#30258) 2024-08-12 10:43:54 +02:00
gentrie_test.go common, eth: remove duplicate test cases (#32624) 2025-09-19 17:20:44 -06:00
handler.go eth: disable snapshots for partial state nodes 2026-04-17 11:55:16 +02:00
handler_fuzzing_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00
metrics.go eth/protocols/snap: add healing and syncing metrics (#32258) 2025-07-24 16:43:04 +08:00
peer.go eth/protocols/eth, eth/protocols/snap: delayed p2p message decoding (#33835) 2026-02-15 21:21:16 +08:00
progress_test.go core, eth/protocols/snap, internal/ethapi: remove redundant types (#29841) 2024-05-27 14:39:39 +08:00
protocol.go eth/protocols/eth, eth/protocols/snap: delayed p2p message decoding (#33835) 2026-02-15 21:21:16 +08:00
range.go eth/protocols/snap: optimize incHash (#32748) 2025-10-10 13:48:25 +08:00
range_test.go eth/protocols/snap: fix snap sync failure on empty storage range (#28306) 2023-10-13 09:08:26 +02:00
sort_test.go core, les, eth: port snap sync changes (#24898) 2022-07-15 14:55:51 +03:00
sync.go eth/protocols/snap: add stateless peer cooldown for partial state mode 2026-04-17 12:01:43 +02:00
sync_partial.go eth/protocols/snap: implement partial sync mode with skip markers 2026-04-17 11:09:19 +02:00
sync_partial_integration_test.go eth/protocols/snap: refactor partial filter and fix sync bugs 2026-04-17 11:55:16 +02:00
sync_partial_test.go eth/protocols/snap: implement partial sync mode with skip markers 2026-04-17 11:09:19 +02:00
sync_test.go eth/protocols/snap: implement partial sync mode with skip markers 2026-04-17 11:09:19 +02:00