• Felix Lange's avatar
    core, eth/downloader: commit block data using batches (#15115) · 10181b57
    Felix Lange authored
    * ethdb: add Putter interface and Has method
    
    * ethdb: improve docs and add IdealBatchSize
    
    * ethdb: remove memory batch lock
    
    Batches are not safe for concurrent use.
    
    * core: use ethdb.Putter for Write* functions
    
    This covers the easy cases.
    
    * core/state: simplify StateSync
    
    * trie: optimize local node check
    
    * ethdb: add ValueSize to Batch
    
    * core: optimize HasHeader check
    
    This avoids one random database read get the block number. For many uses
    of HasHeader, the expectation is that it's actually there. Using Has
    avoids a load + decode of the value.
    
    * core: write fast sync block data in batches
    
    Collect writes into batches up to the ideal size instead of issuing many
    small, concurrent writes.
    
    * eth/downloader: commit larger state batches
    
    Collect nodes into a batch up to the ideal size instead of committing
    whenever a node is received.
    
    * core: optimize HasBlock check
    
    This avoids a random database read to get the number.
    
    * core: use numberCache in HasHeader
    
    numberCache has higher capacity, increasing the odds of finding the
    header without a database lookup.
    
    * core: write imported block data using a batch
    
    Restore batch writes of state and add blocks, tx entries, receipts to
    the same batch. The change also simplifies the miner.
    
    This commit also removes posting of logs when a forked block is imported.
    
    * core: fix DB write error handling
    
    * ethdb: use RLock for Has
    
    * core: fix HasBlock comment
    10181b57
Name
Last commit
Last update
.github Loading commit data...
accounts Loading commit data...
bmt Loading commit data...
build Loading commit data...
cmd Loading commit data...
common Loading commit data...
compression/rle Loading commit data...
consensus Loading commit data...
console Loading commit data...
containers Loading commit data...
contracts Loading commit data...
core Loading commit data...
crypto Loading commit data...
eth Loading commit data...
ethclient Loading commit data...
ethdb Loading commit data...
ethstats Loading commit data...
event Loading commit data...
internal Loading commit data...
les Loading commit data...
light Loading commit data...
log Loading commit data...
metrics Loading commit data...
miner Loading commit data...
mobile Loading commit data...
node Loading commit data...
p2p Loading commit data...
params Loading commit data...
rlp Loading commit data...
rpc Loading commit data...
swarm Loading commit data...
tests Loading commit data...
trie Loading commit data...
vendor Loading commit data...
whisper Loading commit data...
.dockerignore Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Dockerfile Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
VERSION Loading commit data...
appveyor.yml Loading commit data...
circle.yml Loading commit data...
interfaces.go Loading commit data...