omnigraph/docs/releases/v0.4.2.md
2026-05-10 14:02:28 +00:00

61 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Omnigraph v0.4.2
Omnigraph v0.4.2 is a correctness and operability release for concurrent
writes. It closes snapshot-isolation lost-update windows, expands recovery
sidecar coverage for inline deletes, and removes an unwired admission-control
surface before it becomes public API.
## Highlights
- **Read-time drift checks for strict mutations**: staged mutations now compare
the manifest pin captured when the query opened against the manifest snapshot
captured under table-queue ownership. If a concurrent writer moved the table
after the query read, the stale writer returns a manifest-conflict 409 instead
of staging work computed against an old snapshot.
- **Inline-delete recovery coverage**: delete-only mutations still use Lance's
inline delete path, but their recovery sidecar is now written before the
manifest-version rejection path can return. If a delete moves Lance HEAD and a
concurrent manifest update makes the query stale, the next read-write open can
roll the residual back rather than leaving a head-ahead-of-manifest table.
- **Branch-merge target revalidation**: merges re-check target table versions
after acquiring target write queues. A stale merge plan returns a structured
conflict instead of overwriting concurrent target-branch changes or adopting a
source table over newly appended target rows.
- **Lean admission API**: removed the unused global rewrite admission pool,
`service_unavailable` error variant, related 503 documentation, and benchmark
flag. The server keeps the wired per-actor inflight and byte-budget admission
gates.
- **Regression coverage**: failpoint and server matrix tests now cover the
inline-delete sidecar race, merge × change target movement, and post-reopen
branch-op state.
## Behavior changes
- Some concurrent mutation and merge races now return `manifest_conflict`
instead of relying on later publisher-CAS detection or allowing a stale plan
to proceed.
- Concurrent branch merge × change on the same target branch may return either
success or a clean 409 conflict, depending on which operation wins the queue.
- `OMNIGRAPH_GLOBAL_REWRITE_MAX` is no longer recognized. Remove it from
deployment manifests; use the remaining per-actor inflight and byte-budget
admission settings for the currently wired server controls.
## Upgrade Notes
- No repository migration is required. Existing v0.4.1 repos can be opened
directly with v0.4.2.
- Clients should treat `manifest_conflict` 409 responses as retryable stale-view
conflicts. This was already the documented contract, but this release uses it
in more concurrent-write paths.
- Operators should remove stale references to global rewrite admission and 503
rewrite-pool exhaustion from local runbooks.
## Included Changes
- Per-table writer queues and read-time version checks for strict mutation
publishes.
- Branch-merge target snapshot revalidation under queue ownership.
- Inline-delete manifest-conflict recovery-sidecar regression test and fix.
- Matrix coverage updates for merge × change concurrency and reopen
consistency.
- Removal of the unwired global rewrite admission / 503 server surface.