Repository navigation
fix: preserve metadata readiness errors in v3 readers - #161
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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".
| /// Fixed-view metadata is temporarily unavailable (METADATA_NOT_READY, 503). | ||
| MetadataNotReady, |
There was a problem hiding this comment.
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 👍 / 👎.
6288d2a
into
refactor/workspace-v3-online-owner-retirement
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.