From 50a9a630f75390ca824b479aeead0d9f636ce4a6 Mon Sep 17 00:00:00 2001 From: Tyler Chambers <2775339+tylerchambers@users.noreply.github.com> Date: Tue, 10 Aug 2021 05:16:53 -0400 Subject: [PATCH] core/state/snapshot: clarify comment about snapshot repair (#23305) Co-authored-by: Tyler Chambers Co-authored-by: Felix Lange --- core/state/snapshot/snapshot.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/core/state/snapshot/snapshot.go b/core/state/snapshot/snapshot.go index e799dab9738a3..828e58d042b23 100644 --- a/core/state/snapshot/snapshot.go +++ b/core/state/snapshot/snapshot.go @@ -169,11 +169,17 @@ type Tree struct { // store (with a number of memory layers from a journal), ensuring that the head // of the snapshot matches the expected one. // -// If the snapshot is missing or the disk layer is broken, the entire is deleted -// and will be reconstructed from scratch based on the tries in the key-value -// store, on a background thread. If the memory layers from the journal is not -// 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 snapshot is missing or the disk layer is broken, the snapshot will be +// reconstructed using both the existing data and the state trie. +// The repair happens on a background thread. +// +// 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) { // Create a new, empty snapshot tree snap := &Tree{