Skip to content

Commit

Permalink
commit ndb batch and remove lazy parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
yihuang committed Dec 1, 2022
1 parent 5bee6a9 commit 9c1abd8
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 18 deletions.
19 changes: 7 additions & 12 deletions mutable_tree.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand All @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion mutable_tree_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion tree_random_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions tree_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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++ {
Expand Down Expand Up @@ -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++ {
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 9c1abd8

Please sign in to comment.