Skip to content

feat(server)!: log an unknown publication's graph commit as its own field - #1124

Merged
aaltshuler merged 11 commits into
ModernRelay:mainfrom
ragnorc:feat/publication-id-log-field
Oct 28, 2026
Merged

aaltshuler merged 11 commits into
ModernRelay:mainfrom
ragnorc:feat/publication-id-log-field

Conversation

@ragnorc

@ragnorc ragnorc commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Refs #1067 and the accepted storage-outcomes RFC #1093. An unknown publication's graph commit previously appeared only in a diagnostic message that the server deliberately redacts. Carry the commit separately through the manifest error and log it as publication, so operators can look up whether the attempted publication landed without exposing storage paths.

The constructor requires the existing commit ID at every in-doubt publication site. The accessor retains it through completion evidence and the DataFusion error carrier; unrelated uncertain failures return no ID. The warning uses the server's existing final settled error path, so its status agrees with the response and it is emitted once. Publication, retry, retention and recovery semantics are unchanged.

This changes the Rust source API exported in 0.14.0: manifest_publish_in_doubt now takes (graph_commit_id, message), and ManifestError.publication_in_doubt changes from bool to Option<Box<String>>. Rust embedders must update constructor calls and direct field access; the storage-failures guide and breaking release note describe the change. HTTP error responses and CLI syntax are unchanged.

The branch includes current main's telemetry and OIDC admission changes. The telemetry uncertainty fixture uses the new constructor, and the existing OIDC and OTLP release notes have been shortened to restore release-note validation without changing their contracts.

On head 87b1d8e7, all 370 CLI and 225 server library tests pass, with 11 existing ignored nightly/helper tests. The existing publication-log owner covers text and JSON, exact ID presence, absence on unrelated uncertainty, and storage-path redaction; the settled-status and OTLP uncertainty owners also pass. Before the fix, the publication-log owner failed on main 4f47b976 because the field was missing. Formatting, AGENTS links and documentation checks pass. Required CI passed at this exact head, including the full workspace and failpoint tests (covering the core/catalog publication owners), Clippy, GQT, pinned DST, AWS/server, and storage/Azure integration checks.

An in-doubt publication's graph commit lived only in its error message,
which the server never logs because a message can carry storage paths.
`ManifestError` now carries it as `publication_id`, the in-doubt
constructor requires it, and `OmniError::publication_id` reads it through
completion evidence and the DataFusion stream carrier. The server's
`engine failure without definite completion evidence` line names it in a
`publication` field, so an operator can look the commit up later.
…field

The separate `publication_id: Option<String>` beside the
`publication_in_doubt` flag grew `OmniError` to 128 bytes, clippy's
large-error bound for every `Result<_, OmniError>`. The flag and the id
now are one field, `publication_in_doubt: Option<Box<String>>`: present
means a publication is in doubt and names its graph commit. One word
keeps `OmniError` at 120 bytes, and one field cannot disagree with itself.
@aaltshuler aaltshuler changed the title feat(server): log an unknown publication's graph commit as its own field feat(server)!: log an unknown publication's graph commit as its own field Oct 28, 2026
@aaltshuler
aaltshuler marked this pull request as ready for review October 28, 2026 17:32
@aaltshuler
aaltshuler merged commit dac660f into ModernRelay:main Oct 28, 2026
37 of 38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants