Files
pezkuwi-subxt/substrate/client/state-db
NingLin-P 6be21e0397 statedb: allow longer state pruning history (#11980)
* introduce DbBackedQueue for the state pruning window

Signed-off-by: linning <linningde25@gmail.com>

* avoid cloning for next_hash

Signed-off-by: linning <linningde25@gmail.com>

* add tests

Signed-off-by: linning <linningde25@gmail.com>

* make clippy happy

Signed-off-by: linning <linningde25@gmail.com>

* impl have_block by checking block number

Signed-off-by: linning <linningde25@gmail.com>

* refactor

Signed-off-by: linning <linningde25@gmail.com>

* fix tests & add test for init db-backed queue

Signed-off-by: linning <linningde25@gmail.com>

* update comment

Signed-off-by: linning <linningde25@gmail.com>

* add check for have_state_at

Signed-off-by: linning <linningde25@gmail.com>

* address comment

Signed-off-by: linning <linningde25@gmail.com>

* renanme unload_blocks to uncached_blocks

Signed-off-by: linning <linningde25@gmail.com>

* address comment

Signed-off-by: linning <linningde25@gmail.com>

* fix syncs_state test

Signed-off-by: linning <linningde25@gmail.com>

* address comment

Signed-off-by: linning <linningde25@gmail.com>

* revert change to make_test_db to add test cases

Signed-off-by: linning <linningde25@gmail.com>

* do not prune unavailable block & add tests

Signed-off-by: linning <linningde25@gmail.com>

* Update client/state-db/src/lib.rs

Signed-off-by: linning <linningde25@gmail.com>

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* Update client/state-db/src/pruning.rs

Signed-off-by: linning <linningde25@gmail.com>

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* address comment

Signed-off-by: linning <linningde25@gmail.com>

Signed-off-by: linning <linningde25@gmail.com>
Co-authored-by: cheme <emericchevalier.pro@gmail.com>
2022-09-01 15:45:34 +00:00
..
2020-08-20 17:04:42 +02:00

State database maintenance. Handles canonicalization and pruning in the database. The input to this module is a ChangeSet which is basically a list of key-value pairs (trie nodes) that were added or deleted during block execution.

Canonicalization.

Canonicalization window tracks a tree of blocks identified by header hash. The in-memory overlay allows to get any node that was inserted in any of the blocks within the window. The tree is journaled to the backing database and rebuilt on startup. Canonicalization function selects one root from the top of the tree and discards all other roots and their subtrees.

Pruning.

See RefWindow for pruning algorithm details. StateDb prunes on each canonicalization until pruning constraints are satisfied.

License: GPL-3.0-or-later WITH Classpath-exception-2.0