Repository navigation
v0.16.0
Pinned-snapshot views and fixes to first-commit failures
Summary
This release adds two APIs. With a new option, a caller opens a view at a named snapshot, and opening the view and loading that snapshot cost three store reads in place of four. A new Volume method loads a snapshot's manifest once and returns a reader that reads the snapshot's blocks without loading the manifest again. The release also fixes two failures in the first commits of a dataset.
Highlights
WithPinnedSnapshot: a view opened with this option reads the named snapshot's canonical manifest in place of the pointer and the head. Opening the view and loading the snapshot costs three store reads in place of four.volume.Reader.ReaderAt: the method loads a snapshot's manifest once and returns aSnapshotReaderAt, whose reads fetch block data only. A caller that reads a snapshot in several ranges saves one store read for each range after the first.- A race with a first commit: a write that races a dataset's first commit no longer returns
ErrSnapshotConflict. - Abandoned commits: two consecutive abandoned commits no longer leave a dataset that no writer can open.
Upgrade Notes
volume.Readergains the methodReaderAt. A type that implementsvolume.Readeroutside Lode must add the method.
Full Changelog: v0.15.0...v0.16.0