go-ethereum/core
Felix Lange d6c5f2417c
eth: improve shutdown synchronization (#20695)
* eth: improve shutdown synchronization

Most goroutines started by eth.Ethereum didn't have any shutdown sync at
all, which lead to weird error messages when quitting the client.

This change improves the clean shutdown path by stopping all internal
components in dependency order and waiting for them to actually be
stopped before shutdown is considered done. In particular, we now stop
everything related to peers before stopping 'resident' parts such as
core.BlockChain.

* eth: rewrite sync controller

* eth: remove sync start debug message

* eth: notify chainSyncer about new peers after handshake

* eth: move downloader.Cancel call into chainSyncer

* eth: make post-sync block broadcast synchronous

* eth: add comments

* core: change blockchain stop message

* eth: change closeBloomHandler channel type
2020-03-27 15:03:20 +02:00
..
asm core/asm: allow numbers in labels (#20362) 2019-11-23 12:52:17 +01:00
bloombits core/bloombits, light: fix typos (#17235) 2018-07-24 11:24:27 +03:00
forkid consensus/ethash, params: eip-2384: bump difficulty bomb (#20347) 2019-12-06 11:36:40 +02:00
rawdb Merge pull request #20152 from karalabe/snapshot-5 2020-03-23 12:57:31 +02:00
state core: fix two snapshot iterator flaws, decollide snap storage prefix 2020-03-23 12:34:27 +02:00
types core/types: remove BlockBy sorting code (#20355) 2019-11-21 16:35:22 +02:00
vm Merge pull request #20152 from karalabe/snapshot-5 2020-03-23 12:57:31 +02:00
.gitignore Renamed `chain` => `core` 2014-12-04 10:28:02 +01:00
bench_test.go core, light, params: implement eip2028 (#19931) 2019-08-14 15:53:21 +03:00
block_validator.go core: use headers only where blocks are unnecessary 2019-03-13 12:32:47 +02:00
block_validator_test.go all: clean up and proerly abstract database access 2019-03-06 13:35:03 +02:00
blockchain.go eth: improve shutdown synchronization (#20695) 2020-03-27 15:03:20 +02:00
blockchain_insert.go all: simplify timestamps to uint64 (#19372) 2019-04-02 23:28:48 +03:00
blockchain_test.go core: fix two snapshot iterator flaws, decollide snap storage prefix 2020-03-23 12:34:27 +02:00
blocks.go core: typos and comments improve 2017-05-25 17:14:33 +03:00
chain_indexer.go core: fix chain indexer (#19786) 2019-07-03 11:18:48 +03:00
chain_indexer_test.go core: fix chain indexer unit test (#20506) 2020-01-20 10:38:08 +02:00
chain_makers.go core: initial version of state snapshots 2020-02-25 12:51:04 +02:00
chain_makers_test.go all: clean up and proerly abstract database access 2019-03-06 13:35:03 +02:00
dao_test.go all: clean up and proerly abstract database access 2019-03-06 13:35:03 +02:00
error.go core: move error variable to error.go (#19560) 2019-05-13 13:23:32 +03:00
events.go eth/filters: remove use of event.TypeMux for pending logs (#20312) 2019-12-10 12:39:14 +01:00
evm.go core/evm: less iteration in blockhash (#20589) 2020-02-04 12:32:31 +02:00
gaspool.go miner: avoid unnecessary work (#15883) 2018-01-15 12:57:06 +02:00
gen_genesis.go all: regenerate codecs with gencodec commit 90983d99de (#15830) 2018-01-08 15:13:22 +02:00
gen_genesis_account.go all: regenerate codecs with gencodec commit 90983d99de (#15830) 2018-01-08 15:13:22 +02:00
genesis.go core: initial version of state snapshots 2020-02-25 12:51:04 +02:00
genesis_alloc.go cmd, core, params: add support for Goerli 2019-02-04 14:53:12 +02:00
genesis_test.go all: clean up and proerly abstract database access 2019-03-06 13:35:03 +02:00
headerchain.go core, light: write chain data in atomic way (#20287) 2020-01-17 12:49:32 +02:00
mkalloc.go core/vm: 64 bit memory and gas calculations (#19210) 2019-03-12 11:40:05 +02:00
state_prefetcher.go core/state/snapshot: bloom, metrics and prefetcher fixes 2020-02-25 12:51:11 +02:00
state_processor.go core: remove unused gas return in ApplyTransaction (#20065) 2019-09-12 22:22:22 +03:00
state_transition.go core: s/isEIP155/isHomestead/g (fix IntrinsicGas signature var name) (#20300) 2019-11-18 11:41:49 +02:00
tx_cacher.go Comment error (#18303) 2018-12-14 11:15:31 +01:00
tx_journal.go core: fix typos in comment (#17531) 2018-08-28 10:04:33 +03:00
tx_list.go core: count tx size in slots, bump max size ot 4x32KB (#20352) 2020-01-10 11:40:03 +02:00
tx_list_test.go all: switch gas limits from big.Int to uint64 2018-01-03 14:45:35 +02:00
tx_noncer.go core: fix write concurrency in txpool (#19835) 2019-07-17 13:39:41 +03:00
tx_pool.go eth: rework tx fetcher to use O(1) ops + manage network requests 2020-02-13 15:27:15 +02:00
tx_pool_test.go core: fix broken tests due to API changes + linter 2020-02-25 12:51:16 +02:00
types.go core: prefetch next block state concurrently 2019-04-01 11:06:15 +03:00