Skip to content

Commit b7bfb3a

Browse files
committed
feat: allow saving version 0
1 parent e99f035 commit b7bfb3a

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

mutable_tree.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ type MutableTree struct {
4040
unsavedFastNodeRemovals *sync.Map // map[string]interface{} FastNodes that have not yet been removed from disk
4141
ndb *nodeDB
4242
skipFastStorageUpgrade bool // If true, the tree will work like no fast storage and always not upgrade fast storage
43+
initialVersionSet bool
4344

4445
mtx sync.Mutex
4546
}
@@ -146,8 +147,9 @@ func (tree *MutableTree) WorkingHash() []byte {
146147

147148
func (tree *MutableTree) WorkingVersion() int64 {
148149
version := tree.version + 1
149-
if version == 1 && tree.ndb.opts.InitialVersion > 0 {
150+
if version == 1 && tree.initialVersionSet {
150151
version = int64(tree.ndb.opts.InitialVersion)
152+
tree.initialVersionSet = false
151153
}
152154
return version
153155
}
@@ -459,11 +461,11 @@ func (tree *MutableTree) LoadVersion(targetVersion int64) (int64, error) {
459461
tree.ndb.opts.InitialVersion, firstVersion)
460462
}
461463

462-
if latestVersion < targetVersion {
464+
if latestVersion >= 0 && latestVersion < targetVersion {
463465
return latestVersion, fmt.Errorf("wanted to load target %d but only found up to %d", targetVersion, latestVersion)
464466
}
465467

466-
if firstVersion == 0 {
468+
if firstVersion <= 0 {
467469
if targetVersion <= 0 {
468470
if !tree.skipFastStorageUpgrade {
469471
tree.mtx.Lock()
@@ -871,6 +873,7 @@ func (tree *MutableTree) saveFastNodeRemovals() error {
871873
// and is otherwise ignored.
872874
func (tree *MutableTree) SetInitialVersion(version uint64) {
873875
tree.ndb.opts.InitialVersion = version
876+
tree.initialVersionSet = true
874877
}
875878

876879
// DeleteVersionsTo removes versions upto the given version from the MutableTree.

nodedb.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -838,7 +838,7 @@ func (ndb *nodeDB) getLatestVersion() (int64, error) {
838838
return latestVersion, nil
839839
}
840840

841-
return 0, nil
841+
return -1, nil
842842
}
843843

844844
func (ndb *nodeDB) resetLatestVersion(version int64) {

0 commit comments

Comments
 (0)