From cfaebd0638dd675943f48b8086584179f1b5be90 Mon Sep 17 00:00:00 2001 From: yihuang Date: Tue, 6 Dec 2022 20:20:02 +0800 Subject: [PATCH] fix: commit the ndb in LoadVersionForOverwriting (#640) (cherry picked from commit e144f08ceb438c4edb2e60ba7fef43a82fffc82d) # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 6 ++++++ mutable_tree.go | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d032a6ed..2d1e3975c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## Unreleased +<<<<<<< HEAD +======= +- [#586](https://github.com/cosmos/iavl/pull/586) Remove the `RangeProof` and refactor the ics23_proof to use the internal methods. +- [#640](https://github.com/cosmos/iavl/pull/640) commit `NodeDB` batch in `LoadVersionForOverwriting`. + +>>>>>>> e144f08 (fix: commit the ndb in LoadVersionForOverwriting (#640)) ## 0.19.4 (October 28, 2022) - [#599](https://github.com/cosmos/iavl/pull/599) Populate ImmutableTree creation in copy function with missing field diff --git a/mutable_tree.go b/mutable_tree.go index 4d352f680..f704b375f 100644 --- a/mutable_tree.go +++ b/mutable_tree.go @@ -623,6 +623,13 @@ func (tree *MutableTree) LoadVersionForOverwriting(targetVersion int64) (int64, return latestVersion, err } + // Commit the tree rollback first + // The fast storage rebuild don't have to be atomic with this, + // because it's idempotent and will do again when `LoadVersion`. + if err := tree.ndb.Commit(); err != nil { + return latestVersion, err + } + if !tree.skipFastStorageUpgrade { if err := tree.enableFastStorageAndCommitLocked(); err != nil { return latestVersion, err