You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
engine: schema apply stages detached rewrites and publishes its contract without a sidecar (RFC 0067 step 4)
Schema apply is the fourth writer moved to detached table commits.
An existing-table rewrite is a detached Overwrite of the promoted HEAD,
published as a pin one past the published version and promoted after the
manifest commit. An added type stays a linear version-one create at its
identity path; that path is a deterministic function of the accepted
identity allocator (the RFC's "fresh incarnation path" was wrong), so an
attempt that died after creating the dataset left it exactly where the
retry creates it, and the retry reclaims the unregistered leftover under
the schema sentinel instead of refusing to claim unowned physical state.
The schema contract is staged with the graph commit that publishes it
recorded in `__schema_state.json.staging`, and the writer installs the
live contract from memory after the commit. No SchemaApply sidecar is
written: a failure before the manifest commit returns the plain error
and leaves detached versions, a created dataset and a staged contract
that the next read-write open discards; a failure after it reports
`RecoveryRequired` naming the published commit, and the next read-write
open, or the same handle's next write, installs the contract because
that commit is in main's lineage. A read-only open refuses a published
but uninstalled contract and serves an unpublished staging as absent.
The open also reclaims a sentinel left by a crashed apply, which
previously stayed behind whenever an apply died after deleting its
sidecar, and the release is idempotent.
The RFC 0040 system-column upgrade keeps the v9 exact protocol, its
unmarked staging and its sidecar; the schema-apply sidecar constructor
is test-only until step 5 removes the classifier.
Lance fence: an Overwrite replayed over its own twin is idempotent
(Lance recognises the committed transaction and adds no version), so
racing promoters of a schema-apply pin leave no residue.
Tests: the schema-apply failpoint cells become no-residue, staging
discard, staging promotion, leftover reclaim, same-handle heal and
manifest-CAS-loss tests; the sidecar-rollback, foreign-winner and
Optimize late-sidecar tests whose producer no longer exists are
retired; `detached_commit_matrix` gains the `SchemaApply` writer (52
cells in the full run); `write_cost` gains
`schema_apply_writes_no_control_object`; the seam
`schema_apply.post_publish_pre_promotion` is new and the DST catalog
lists 72 windows.
"read-only open found SchemaApply manifest outcome for graph commit '{}' but the schema contract promotion is pending; run a read-write open to finish it",
6931
+
graph_commit_id
6932
+
),
6933
+
));
6934
+
}
6935
+
6942
6936
for sidecar in sidecars {
6943
6937
if !matches!(sidecar.writer_kind,SidecarKind::SchemaApply){
0 commit comments