From 9b32a98d0be085d6a3a5ff17329b305808fbe5e0 Mon Sep 17 00:00:00 2001 From: Dev Ojha Date: Sun, 9 Apr 2023 23:01:47 +0200 Subject: [PATCH] Add resetBatch optimization to fastnode genesis --- mutable_tree.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mutable_tree.go b/mutable_tree.go index a5b4e1e6e..234d93a56 100644 --- a/mutable_tree.go +++ b/mutable_tree.go @@ -661,6 +661,7 @@ func (tree *MutableTree) GetVersioned(key []byte, version int64) ([]byte, error) // the tree. Returns the hash and new version number. func (tree *MutableTree) SaveVersion() ([]byte, int64, error) { version := tree.version + 1 + isGenesis := (version == 1) if version == 1 && tree.ndb.opts.InitialVersion > 0 { version = int64(tree.ndb.opts.InitialVersion) } @@ -718,7 +719,7 @@ func (tree *MutableTree) SaveVersion() ([]byte, int64, error) { tree.ndb.resetLatestVersion(version) if !tree.skipFastStorageUpgrade { - if err := tree.saveFastNodeVersion(); err != nil { + if err := tree.saveFastNodeVersion(isGenesis); err != nil { return nil, version, err } } @@ -745,8 +746,8 @@ func (tree *MutableTree) SaveVersion() ([]byte, int64, error) { return hash, version, nil } -func (tree *MutableTree) saveFastNodeVersion() error { - if err := tree.saveFastNodeAdditions(); err != nil { +func (tree *MutableTree) saveFastNodeVersion(isGenesis bool) error { + if err := tree.saveFastNodeAdditions(isGenesis); err != nil { return err } if err := tree.saveFastNodeRemovals(); err != nil { @@ -771,7 +772,7 @@ func (tree *MutableTree) addUnsavedAddition(key []byte, node *fastnode.Node) { tree.unsavedFastNodeAdditions[skey] = node } -func (tree *MutableTree) saveFastNodeAdditions() error { +func (tree *MutableTree) saveFastNodeAdditions(batchCommmit bool) error { keysToSort := make([]string, 0, len(tree.unsavedFastNodeAdditions)) for key := range tree.unsavedFastNodeAdditions { keysToSort = append(keysToSort, key) @@ -782,6 +783,11 @@ func (tree *MutableTree) saveFastNodeAdditions() error { if err := tree.ndb.SaveFastNode(tree.unsavedFastNodeAdditions[key]); err != nil { return err } + if batchCommmit { + if err := tree.ndb.resetBatch(); err != nil { + return err + } + } } return nil }