From c9228498dd6cde3cd9b7338d9d7c9f03ad8adab2 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Wed, 21 Oct 2020 16:18:08 +0800 Subject: [PATCH 1/2] core/state: maintain one more diff layer --- core/state/statedb.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/state/statedb.go b/core/state/statedb.go index 36f7d863af9b..80ad8b22a852 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -869,7 +869,11 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) { if err := s.snaps.Update(root, parent, s.snapDestructs, s.snapAccounts, s.snapStorage); err != nil { log.Warn("Failed to update snapshot tree", "from", parent, "to", root, "err", err) } - if err := s.snaps.Cap(root, 127); err != nil { // Persistent layer is 128th, the last available trie + // Keep 128 diff layers in the memory, persistent layer is 129th. + // - head layer is paired with HEAD state + // - head-1 layer is paired with HEAD-1 state + // - head-127 layer(bottom-most diff layer) is paired with HEAD-127 state + if err := s.snaps.Cap(root, 128); err != nil { log.Warn("Failed to cap snapshot tree", "root", root, "layers", 127, "err", err) } } From b573180517b9d95cd34def81a35027ef9fc2db2a Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Tue, 27 Oct 2020 11:10:15 +0800 Subject: [PATCH 2/2] core/state: address comment --- core/state/statedb.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/state/statedb.go b/core/state/statedb.go index 80ad8b22a852..3c7571adb5cb 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -874,7 +874,7 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) { // - head-1 layer is paired with HEAD-1 state // - head-127 layer(bottom-most diff layer) is paired with HEAD-127 state if err := s.snaps.Cap(root, 128); err != nil { - log.Warn("Failed to cap snapshot tree", "root", root, "layers", 127, "err", err) + log.Warn("Failed to cap snapshot tree", "root", root, "layers", 128, "err", err) } } s.snap, s.snapDestructs, s.snapAccounts, s.snapStorage = nil, nil, nil, nil