* 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>
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