Skip to content

v0.17.1

Choose a tag to compare

@github-actions github-actions released this 24 Jul 00:34
· 19 commits to main since this release
3f7a9ba

This is a patch release for the 0.17 line. It fixes a secondary-index read bug where directional gets could return a record belonging to a different index, prevents ensemble changes from downgrading a shard's negotiated feature support during mixed-version operation, and speeds up the apply path with zero-copy WAL entry decoding.

Fixed

Secondary indexes

  • Secondary-index gets no longer return records from other indexes (#1248). A get on a secondary index (any comparison type) iterated the key space without enforcing the requested index's boundaries: when the index had no matching entry in the search direction, the lookup could land on a neighboring index's entries and return one of its records — e.g. a CEILING/HIGHER get past the index's highest key, a FLOOR/LOWER get below its lowest, or an EQUAL get whose key exists only in another index. The walk is now bounded to the requested index's key region, returning KEY_NOT_FOUND at its edges, and no longer scans unrelated key ranges entry by entry before giving up. This completes the partial fix shipped in v0.15.0 (#763).

Coordinator

  • Ensemble changes preserve negotiated shard feature support (#1234). Feature negotiation protected the initial leader election during rolling upgrades, but a later change-ensemble operation could swap in a node that does not advertise the shard's negotiated features, leaving the shard with a member that cannot safely participate in its log behavior. Ensemble members with missing feature info are now treated as having no feature support, and change-ensemble actions that would reduce the shard's negotiated feature level are rejected.

Improved

  • Zero-copy WAL entry decoding on the apply path (#1246). Committed entries are decoded with UnmarshalVTUnsafe, aliasing string/bytes fields into the entry buffer instead of copying every field (~2.7× faster for a 32-put/512-byte batch), together with a fix ensuring pooled storage entries never retain borrowed buffers across pool recycles.

Upgrade notes

  • Secondary-index gets that previously returned a record from a different index (incorrect results) now return KEY_NOT_FOUND.
  • No data migration, configuration, public API, or metrics changes.

Full Changelog: v0.17.0...v0.17.1