core/state/snapshot: clarify comment about snapshot repair (#23305)

Co-authored-by: Tyler Chambers <me@tylerchambers.net>
Co-authored-by: Felix Lange <fjl@twurst.com>
This commit is contained in:
Tyler Chambers 2021-08-10 05:16:53 -04:00 committed by GitHub
parent 57d9e0ac75
commit 66948316f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -169,11 +169,17 @@ type Tree struct {
// store (with a number of memory layers from a journal), ensuring that the head // store (with a number of memory layers from a journal), ensuring that the head
// of the snapshot matches the expected one. // of the snapshot matches the expected one.
// //
// If the snapshot is missing or the disk layer is broken, the entire is deleted // If the snapshot is missing or the disk layer is broken, the snapshot will be
// and will be reconstructed from scratch based on the tries in the key-value // reconstructed using both the existing data and the state trie.
// store, on a background thread. If the memory layers from the journal is not // The repair happens on a background thread.
// continuous with disk layer or the journal is missing, all diffs will be discarded //
// iff it's in "recovery" mode, otherwise rebuild is mandatory. // If the memory layers in the journal do not match the disk layer (e.g. there is
// a gap) or the journal is missing, there are two repair cases:
//
// - if the 'recovery' parameter is true, all memory diff-layers will be discarded.
// This case happens when the snapshot is 'ahead' of the state trie.
// - otherwise, the entire snapshot is considered invalid and will be recreated on
// a background thread.
func New(diskdb ethdb.KeyValueStore, triedb *trie.Database, cache int, root common.Hash, async bool, rebuild bool, recovery bool) (*Tree, error) { func New(diskdb ethdb.KeyValueStore, triedb *trie.Database, cache int, root common.Hash, async bool, rebuild bool, recovery bool) (*Tree, error) {
// Create a new, empty snapshot tree // Create a new, empty snapshot tree
snap := &Tree{ snap := &Tree{