Skip to content

fix: preserve metadata readiness errors in v3 readers - #161

Merged
Ivanbeethoven merged 1 commit into
refactor/workspace-v3-online-owner-retirementfrom
fix/mst2-metadata-not-ready-client
Oct 7, 2026
Merged

Ivanbeethoven merged 1 commit into
refactor/workspace-v3-online-owner-retirementfrom
fix/mst2-metadata-not-ready-client

Conversation

@Ivanbeethoven

@Ivanbeethoven Ivanbeethoven commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

METADATA_NOT_READY from the fixed-view server currently falls back to Internal in the public client error type. Preserve it as MetadataNotReady, return EAGAIN from FUSE, and treat a real HTTP 503 renewal failure as transient without extending or reviving the existing lease.

Actual HTTP/FUSE regressions cover recovery after one 503, exhaustion after four attempts followed by same-reader recovery, and a non-retryable response leaving no range cache or retained budget before the same inode succeeds. Existing error-envelope, exhaustive enum and renewal/deadline tests retain their assertions with the new type.

Validation at ee420ce: all ten repository gates pass, including Linux default/all-feature tests, Clippy, macOS, installer and benchmark contracts. All three new tests execute on both Linux profiles; macOS executes the new FUSE case (the two canonical HTTP cases are not in its targets). All 42 prior owner regressions remain green on all three profiles, along with the existing error-wire and lease lifecycle cases on Linux. Two complete source reviews and the exact native/source-tree identity audit pass. No performance improvement is claimed. The added public enum variant is an intentional Rust source API change; old buffered aggregate-frame wrappers remain separate retirement work.

Stacked on #160; supports the server-side METADATA_NOT_READY response in gitmono-dev/mega2#55.

@Ivanbeethoven
Ivanbeethoven marked this pull request as ready for review October 7, 2026 06:15
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-07T06:17:18.409601Z ee420ce Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ee420ce106

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/snapshot/types.rs
Comment on lines +61 to +62
/// Fixed-view metadata is temporarily unavailable (METADATA_NOT_READY, 503).
MetadataNotReady,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve compatibility of the public error enum

When a downstream crate exhaustively matches SnapshotErrorCode—a usage explicitly supported by the existing API—adding MetadataNotReady makes that crate fail to compile after upgrading. Updating this repository's exhaustive-match test only masks the break for existing consumers. Keep the legacy projection as Internal and expose the typed value through the already #[non_exhaustive] CanonicalSnapshotErrorCode, or treat this as an explicitly breaking release.

Useful? React with 👍 / 👎.

@Ivanbeethoven
Ivanbeethoven merged commit 6288d2a into refactor/workspace-v3-online-owner-retirement Oct 7, 2026
10 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.

1 participant