go-ethereum/eth/downloader
Delweng 78b6059341
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Docker Image (push) Waiting to run
eth: quick canceling block inserting when debug_setHead is invoked (#32067)
If Geth is engaged in a long-run block synchronization, such as a full
syncing over a large number of blocks, invoking `debug_setHead` will
cause `downloader.Cancel` to wait for all fetchers to stop first.
This can be time-consuming, particularly for the block processing
thread.

To address this, we manually call `blockchain.StopInsert` to interrupt
the blocking processing thread and allow it to exit immediately, and
after that call `blockchain.ResumeInsert` to resume the block
downloading process.

Additionally, we add a sanity check for the input block number of
`debug_setHead` to ensure its validity.

---------

Signed-off-by: jsvisa <delweng@gmail.com>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2025-06-23 14:04:21 +08:00
..
api.go eth/downloader, eth/tracer: fix typos in comments (#29707) 2024-05-29 14:43:07 +02:00
beacondevsync.go eth/catalyst: fetch header on forkchoiceUpdated (#31928) 2025-06-18 15:06:49 +08:00
beaconsync.go core, eth/downloader: implement pruning mode sync (#31414) 2025-04-03 15:16:35 +02:00
downloader.go eth: quick canceling block inserting when debug_setHead is invoked (#32067) 2025-06-23 14:04:21 +08:00
downloader_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00
events.go cmd,eth: 16400 Add an option to stop geth once in sync. WIP for light mode (#17321) 2019-01-30 08:40:36 +01:00
fetchers.go eth/downloader: purge pre-merge sync code (#29281) 2024-04-30 15:46:53 +02:00
fetchers_concurrent.go eth/downloader: purge pre-merge sync code (#29281) 2024-04-30 15:46:53 +02:00
fetchers_concurrent_bodies.go all: implement flat deposit requests encoding (#30425) 2024-10-09 12:24:58 +02:00
fetchers_concurrent_receipts.go eth/protocols/eth: implement eth/69 (#29158) 2025-05-16 17:10:47 +02:00
metrics.go core, eth/downloader: implement pruning mode sync (#31414) 2025-04-03 15:16:35 +02:00
peer.go all: nuke total difficulty (#30744) 2025-01-28 18:55:41 +01:00
queue.go eth/downloader: fix missing receipt (#31952) 2025-06-04 16:07:16 +02:00
queue_test.go eth/protocols/eth: implement eth/69 (#29158) 2025-05-16 17:10:47 +02:00
resultstore.go core, eth/downloader: implement pruning mode sync (#31414) 2025-04-03 15:16:35 +02:00
skeleton.go all: fix typos in docs and comments (#31548) 2025-04-02 13:52:40 -06:00
skeleton_test.go eth/downloader: fix flaky test (#29852) 2024-05-27 16:26:55 +02:00
statesync.go eth: request id dispatcher and direct req/reply APIs (#23576) 2021-11-26 13:26:03 +02:00
testchain_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00