• 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
..
downloader Loading commit data...
fetcher Loading commit data...
filters Loading commit data...
gasprice Loading commit data...
api.go Loading commit data...
api_backend.go Loading commit data...
api_test.go Loading commit data...
backend.go Loading commit data...
bind.go Loading commit data...
bloombits.go Loading commit data...
config.go Loading commit data...
db_upgrade.go Loading commit data...
gen_config.go Loading commit data...
handler.go Loading commit data...
handler_test.go Loading commit data...
helper_test.go Loading commit data...
metrics.go Loading commit data...
peer.go Loading commit data...
protocol.go Loading commit data...
protocol_test.go Loading commit data...
sync.go Loading commit data...
sync_test.go Loading commit data...