Skip to content

Commit

Permalink
changelog: update for 0.14.0
Browse files Browse the repository at this point in the history
  • Loading branch information
erikgrinaker committed Jul 2, 2020
1 parent 7bc2ca0 commit a1cd0be
Showing 1 changed file with 24 additions and 18 deletions.
42 changes: 24 additions & 18 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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

Expand Down

0 comments on commit a1cd0be

Please sign in to comment.