From 9c1abd8b6900762ea9784e5ce63907f5f6ab7aa8 Mon Sep 17 00:00:00 2001 From: HuangYi Date: Thu, 1 Dec 2022 12:12:59 +0800 Subject: [PATCH] commit ndb batch and remove lazy parameter --- mutable_tree.go | 19 +++++++------------ mutable_tree_test.go | 2 +- tree_random_test.go | 2 +- tree_test.go | 8 ++++---- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/mutable_tree.go b/mutable_tree.go index ee81474f6..24a07f148 100644 --- a/mutable_tree.go +++ b/mutable_tree.go @@ -615,17 +615,8 @@ func (tree *MutableTree) LoadVersion(targetVersion int64) (int64, error) { // LoadVersionForOverwriting attempts to load a tree at a previously committed // version, or the latest version below it. Any versions greater than targetVersion will be deleted. -// When lazy=true, call `LazyLoadVersion` instead of `LoadVersion`. -func (tree *MutableTree) LoadVersionForOverwriting(targetVersion int64, lazy bool) (int64, error) { - var ( - latestVersion int64 - err error - ) - if lazy { - latestVersion, err = tree.LazyLoadVersion(targetVersion) - } else { - latestVersion, err = tree.LoadVersion(targetVersion) - } +func (tree *MutableTree) LoadVersionForOverwriting(targetVersion int64) (int64, error) { + latestVersion, err := tree.LoadVersion(targetVersion) if err != nil { return latestVersion, err } @@ -634,11 +625,15 @@ func (tree *MutableTree) LoadVersionForOverwriting(targetVersion int64, lazy boo return latestVersion, err } - tree.ndb.resetLatestVersion(latestVersion) + if err := tree.ndb.Commit(); err != nil { + return latestVersion, err + } tree.mtx.Lock() defer tree.mtx.Unlock() + tree.ndb.resetLatestVersion(latestVersion) + if !tree.skipFastStorageUpgrade { // it'll repopulates the fast node index because of version mismatch. if _, err := tree.enableFastStorageAndCommitIfNotEnabled(); err != nil { diff --git a/mutable_tree_test.go b/mutable_tree_test.go index d1aa333c8..d1f583ae3 100644 --- a/mutable_tree_test.go +++ b/mutable_tree_test.go @@ -1414,7 +1414,7 @@ func TestNoFastStorageUpgrade_Integration_SaveVersion_Load_Get_Success(t *testin require.False(t, isFastCacheEnabled) // LoadVersionForOverwriting - should not auto enable fast storage - version, err = sut.LoadVersionForOverwriting(1, false) + version, err = sut.LoadVersionForOverwriting(1) require.NoError(t, err) require.Equal(t, int64(1), version) diff --git a/tree_random_test.go b/tree_random_test.go index c93c5b621..42f5e309f 100644 --- a/tree_random_test.go +++ b/tree_random_test.go @@ -231,7 +231,7 @@ func testRandomOperations(t *testing.T, randSeed int64) { if len(versions) > 1 { version = int64(versions[r.Intn(len(versions)-1)]) t.Logf("Reverting to version %v", version) - _, err = tree.LoadVersionForOverwriting(version, false) + _, err = tree.LoadVersionForOverwriting(version) require.NoError(t, err, "Failed to revert to version %v", version) if m, ok := diskMirrors[version]; ok { mirror = copyMirror(m) diff --git a/tree_test.go b/tree_test.go index 4520dccaa..85b2415d3 100644 --- a/tree_test.go +++ b/tree_test.go @@ -1511,12 +1511,12 @@ func TestLoadVersionForOverwriting(t *testing.T) { tree, err = NewMutableTree(mdb, 0, false) require.NoError(err) - targetVersion, _ := tree.LoadVersionForOverwriting(int64(maxLength*2), false) + targetVersion, _ := tree.LoadVersionForOverwriting(int64(maxLength * 2)) require.Equal(targetVersion, int64(maxLength), "targetVersion shouldn't larger than the actual tree latest version") tree, err = NewMutableTree(mdb, 0, false) require.NoError(err) - _, err = tree.LoadVersionForOverwriting(int64(maxLength/2), false) + _, err = tree.LoadVersionForOverwriting(int64(maxLength / 2)) require.NoError(err, "LoadVersion should not fail") for version := 1; version <= maxLength/2; version++ { @@ -1737,7 +1737,7 @@ func TestLoadVersionForOverwritingCase2(t *testing.T) { } } - _, err = tree.LoadVersionForOverwriting(1, false) + _, err = tree.LoadVersionForOverwriting(1) require.NoError(err, "LoadVersionForOverwriting should not fail") for i := byte(0); i < 20; i++ { @@ -1799,7 +1799,7 @@ func TestLoadVersionForOverwritingCase3(t *testing.T) { _, _, err = tree.SaveVersion() require.NoError(err) - _, err = tree.LoadVersionForOverwriting(1, false) + _, err = tree.LoadVersionForOverwriting(1) require.NoError(err) for _, n := range removedNodes { has, err := tree.ndb.Has(n.hash)