Repository navigation
v0.15.0
Artifact bytes in Lode Volumes, written and read by range
Summary
Each artifact is now one Lode Volume that the runtime fills range by range, so an artifact up to 1 GiB never sits whole in memory. Scripts write large artifacts with emit.artifactWriter, Go readers open them with quarry/reader, and quarry prune removes them with their runs.
Highlights
- Artifacts in Lode Volumes: the runtime commits each range as it arrives under
artifacts/<dataset>/<run key>/volumes/<artifact_id>/. The commit record names the Volume snapshot and the SHA-256 the runtime computed. - Range frames: the executor sends
artifact_open, ranges of at most 8 MiB in any order, and theartifactevent, and the runtime acknowledges each range once it is durable. emit.artifactWriter: a script declares an artifact's size and optional digest, writes it withwriteAtin any order, and commits it once the ranges cover it.- Artifact reads:
ListArtifactsandOpenArtifactinquarry/readerread a run's artifacts as a stream or by range, from a Volume or from the chunk records of earlier runs. - Retention:
quarry pruneremoves a run's Volumes before its records, the sweep removes orphaned ones, and an unterminated run's age also counts its Volume commits. - Lode v0.14.0: commits succeed on Hetzner Object Storage, and a retried artifact range completes its commit.
Breaking Changes
--flush-mode, thepolicy.flush_modeconfig key, andpolicy.FlushModeare removed. A run that passes them fails to start.- Policies and sinks handle events only:
IngestArtifactChunk,WriteChunks, the chunk statistics,policy.NewCompositeSink, and thetypes.ArtifactChunkfamily are removed. - The
artifact_chunkframe is retired, and the run report countsrangeswhere it countedchunks.
Upgrade Notes
- Remove
--flush-modefromquarry runcommands andflush_modefrom thepolicysection of config files. - Drop
WriteChunksfrom a custompolicy.Sinkorlode.Client, and read artifacts throughquarry/reader. - A custom executor sends
artifact_openandartifact_rangeframes and waits for eachartifact_range_ack. The bundled executor does.
Full Changelog: v0.14.2...v0.15.0