Releases: osmosis-labs/iavl
v0.17.3-osmo-v7
v0.17.3-osmo-v6
v0.17.3-osmo-v5
v0.17.3-osmo-v4
v0.17.3-osmo-v3
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
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
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
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
This is a pre-release to import and test fast storage with mutable tree iterator enabled
Fast Storage
This is a release to test fast storage