Skip to content

Commit

Permalink
changelog: prepare 0.14.0-rc2 (#283)
Browse files Browse the repository at this point in the history
  • Loading branch information
erikgrinaker authored Jun 26, 2020
1 parent 2142759 commit 7bc2ca0
Showing 1 changed file with 32 additions and 22 deletions.
54 changes: 32 additions & 22 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,67 @@
# Changelog

## Unreleased

### Improvements

- Add `Repair013Orphans()` to repair faulty orphans in a database last written to by IAVL 0.13.x

### Bug Fixes

- Remove unnecessary Protobuf dependencies

## 0.14.0-rc1 (June 24, 2020)
## 0.14.0-rc2 (June 26, 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.

If you are using 0.13 with a `KeepEvery` value other than `1` (the default), then when upgrading
to 0.14 (or newer) it is important to follow these instructions:
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 possible, upgrade after saving a multiple of `KeepEvery` - for example, with `KeepEvery: 1000`
then stop 1.13 immediately after saving e.g. version `7000` to disk. Upgrading to 1.14 is then
then stop 0.13 immediately after saving e.g. version `7000` to disk. Upgrading to 0.14 is then
safe.

* Otherwise, after upgrading to 0.14, do not delete the last version saved to disk - this
* 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.

* 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 1.13 at version `7364` (saving `7000` to disk) and
upgrading to 1.14 means version `7000` must never be deleted.
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.

Users wishing to prune historical versions can do so via `MutableTree.DeleteVersion()`.

### Improvements

- [\#282](https://github.com/cosmos/iavl/pull/282) Add `Repair013Orphans()` to repair faulty
orphans in a database last written to by IAVL 0.13.x

### Bug Fixes

- [\#281](https://github.com/cosmos/iavl/pull/281) Remove unnecessary Protobuf dependencies

## 0.14.0-rc1 (June 24, 2020)

See important upgrade information for 0.14.0-rc2 above.

Special thanks to external contributors on this release: @ridenaio

### Breaking Changes

- \#274 Remove pruning options `KeepEvery` and `KeepRecent` (see warning above) and the `recentDB`
parameter to `NewMutableTreeWithOpts()`.
- [\#274](https://github.com/cosmos/iavl/pull/274) Remove pruning options `KeepEvery` and
`KeepRecent` (see warning above) and the `recentDB` parameter to `NewMutableTreeWithOpts()`.

### Improvements

- \#271 Add `MutableTree.DeleteVersions()` for deleting multiple versions
- [\#271](https://github.com/cosmos/iavl/pull/271) Add `MutableTree.DeleteVersions()` for deleting
multiple versions

- \#235 Reduce `ImmutableTree.Export()` buffer size from 64 to 32 nodes
- [\#235](https://github.com/cosmos/iavl/pull/235) Reduce `ImmutableTree.Export()` buffer size from
64 to 32 nodes

### Bug Fixes

- \#275 Fix data corruption with `LoadVersionForOverwriting`
- [\#275](https://github.com/cosmos/iavl/pull/275) Fix data corruption with
`LoadVersionForOverwriting`

## 0.13.3 (April 5, 2020)

Expand Down

0 comments on commit 7bc2ca0

Please sign in to comment.