Skip to content

Releases: osmosis-labs/iavl

v0.17.3-osmo-v7

27 Mar 20:41
82b9e53
Compare
Choose a tag to compare
v0.17.3-osmo-v7 Pre-release
Pre-release

What's Changed

  • hardcode fast node cache size to 100,000 by @p0mvn in #37

v0.17.3-osmo-v6

22 Mar 04:45
2b3c847
Compare
Choose a tag to compare
v0.17.3-osmo-v6 Pre-release
Pre-release

What's Changed

  • avoid clearing fast node cache during pruning by @p0mvn in #35
  • fix data race related to VersionExists by @p0mvn in #36

v0.17.3-osmo-v5

09 Mar 18:41
d136ed6
Compare
Choose a tag to compare

What's Changed

  • fix concurrent map panic when querying and committing by @p0mvn in #34

v0.17.3-osmo-v4

21 Feb 21:52
2e0b26a
Compare
Choose a tag to compare

What's Changed

  • revert #23 (sync access to fast node cache), fix bug related to old height export by @p0mvn in #33

v0.17.3-osmo-v3

20 Feb 17:25
26345cb
Compare
Choose a tag to compare

The main focus of this release is stability improvements with the IAVL patch of v0.17.3-osmo-v1 The big points are:

  • Reduce the RAM overhead during the initial IAVL migration. Node operators should still have 32GB of RAM for all of their mainnet nodes.

v0.17.3-osmo-v1 - Fast Storage

11 Feb 17:09
Compare
Choose a tag to compare

Background
Historically IAVL has had a very slow performance during state machine execution, and for responding to queries to live state. This release speeds up these routines by an order of magnitude, alleviating large amounts of pressure from all users of the IAVL database.

Details

This release introduces an auxiliary fast storage system to IAVL, which represents a copy of the latest state much more amenable to efficient querying and iteration.

Prior to this release, all data gets & iterations suffered two significant performance drawdowns:

  • Every get/iteration is forced to walk the tree structure
  • Every node (including leaves) is stored on disk, with its key being a SHA256 hash of something. Leaves were Hash(logical key), internal nodes were indexed by their Merkle tree inner node hash as well. This breaks data locality and makes every get that should be in RAM / CPU caches instead be a random leveldb file open.

The fast storage nodes are instead indexed by the logical key on the disk. This allows us to preserve data locality for the latest state, significantly improving iterations and queries. (Depending on the particular benchmark, between 5-30x improvements) This implementation introduces a negligible overhead for writes.

Downgrade-re-upgrade protection
We introduced a downgrade and re-upgrade protection where we guard for potential downgrades of iavl and the subsequent enablement of the fast storage again. This is done so by storing the metadata about the current version of the storage and the latest live state stored.

v0.17.3-fast.4

08 Feb 15:05
Compare
Choose a tag to compare
v0.17.3-fast.4 Pre-release
Pre-release

This is a pre-release for testing fast storage. Changes since the last pre-release:

  • Small fixes for unsaved fast iterator which is used by mutable tree
  • expose isUpgradeable method on the mutable tree

Fast Storage

07 Feb 02:23
Compare
Choose a tag to compare
Fast Storage Pre-release
Pre-release

This is a pre-release to import and test fast storage

Changes from previous pre-release:

  • fix bug where fast storage would not be enabled while loading version 0

Fast Storage - Mutable Tree Iterator

06 Feb 21:14
Compare
Choose a tag to compare
Pre-release

This is a pre-release to import and test fast storage with mutable tree iterator enabled

Fast Storage

03 Feb 17:36
Compare
Choose a tag to compare
Fast Storage Pre-release
Pre-release

This is a release to test fast storage