From a1cd0bea2e58e9a7ef3e89db38776f2daa8db9c1 Mon Sep 17 00:00:00 2001 From: Erik Grinaker Date: Thu, 2 Jul 2020 11:54:38 +0200 Subject: [PATCH] changelog: update for 0.14.0 --- CHANGELOG.md | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69590efca..45872736f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,35 +1,41 @@ # Changelog -## 0.14.0-rc2 (June 26, 2020) +## 0.14.0 (July 2, 2020) **Important information:** the pruning functionality introduced with IAVL 0.13.0 via the options -`KeepEvery` and `KeepRecent` has multiple problems with data corruption, performance, and -memory usage. For these reasons, this functionality has now been removed. All 0.13 users are -urged to upgrade once the final 0.14.0 release is out, and to not change their pruning settings -while on 0.13. +`KeepEvery` and `KeepRecent` has problems with data corruption, performance, and memory usage. For +these reasons, this functionality has now been removed. All 0.13 users are urged to upgrade, and to +not change their pruning settings while on 0.13. + +Make sure to follow these instructions when upgrading, to avoid data corruption: -If you are using 0.13 with `KeepEvery` other than `1` (the default), then when upgrading to 0.14 -(or newer) it is important to follow these instructions: +* If using `KeepEvery: 1` (the default) then upgrading to 0.14 is safe. -* If possible, upgrade after saving a multiple of `KeepEvery` - for example, with `KeepEvery: 1000` - then stop 0.13 immediately after saving e.g. version `7000` to disk. Upgrading to 0.14 is then - safe. +* Otherwise, upgrade after saving a multiple of `KeepEvery` - for example, with `KeepEvery: 1000` + stop 0.13 after saving e.g. version `7000` to disk. A later version must never have been saved + to the tree. Upgrading to 0.14 is then safe. * Otherwise, consider using the `Repair013Orphans()` function to repair faulty data in databases last written to by 0.13. This must be done before opening the database with IAVL 0.14, and a - database backup should be taken first. + database backup should be taken first. Upgrading to 0.14 is then safe. * Otherwise, after upgrading to 0.14, do not delete the last version saved to disk by 0.13 - this - contains incorrect data that may cause data corruption, making the database unusable. For - example, with `KeepEvery: 1000` then stopping 0.13 at version `7364` (saving `7000` to disk) and - upgrading to 0.14 means version `7000` must never be deleted. + contains incorrect data that may cause data corruption when deleted, making the database + unusable. For example, with `KeepEvery: 1000` then stopping 0.13 at version `7364` (saving + `7000` to disk) and upgrading to 0.14 means version `7000` must never be deleted. - It may be possible to delete it if the _same sequence_ of changes have been written to the newer - versions as before the upgrade, and all versions between `7000` and `7364` are deleted, but - thorough testing and backups are recommended if attempting this. + It may be possible to delete it if the exact same sequence of changes have been written to the + newer versions as before the upgrade, and all versions between `7000` and `7364` are deleted + first, but thorough testing and backups are recommended if attempting this. Users wishing to prune historical versions can do so via `MutableTree.DeleteVersion()`. +There are no changes from 0.14.0-rc2. + +## 0.14.0-rc2 (June 26, 2020) + +See important upgrade information for 0.14.0 above. + ### Improvements - [\#282](https://github.com/cosmos/iavl/pull/282) Add `Repair013Orphans()` to repair faulty @@ -41,7 +47,7 @@ Users wishing to prune historical versions can do so via `MutableTree.DeleteVers ## 0.14.0-rc1 (June 24, 2020) -See important upgrade information for 0.14.0-rc2 above. +See important upgrade information for 0.14.0 above. Special thanks to external contributors on this release: @ridenaio