Fix cache and server error propagation#2779
Draft
seungpyoson wants to merge 6 commits into
Draft
Conversation
Author
|
Exact-head review and verification record for
The adversarial pass specifically rechecked fatal compiler disposition, archive-member validation, exact-byte post-validation backfill, disk read-only behavior, remote namespace/public-cache handling, version skew, absolute IPC deadlines and their completion race, fallback phase safety, and cross-platform timeout telemetry. |
Author
|
Closing and reopening to refresh stale head metadata after the fork branch advanced. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Root cause
The OpenDAL integration introduced by #1497 correctly separated
NotFoundfrom noisy logging, but later storage and IPC boundaries erased other failure information too. Backend errors, corrupt members, disk I/O failures, timeouts, and client disconnects could therefore become ordinary cache misses followed by successful uncached compilation.The same broad fallback existed independently in multi-level lookup, preprocessor validation, disk indexing, cache archive extraction, and client-side protocol handling. Fixing only the initial OpenDAL match would leave those alternate fail-open paths intact.
Resulting behavior
LISTafter every cold miss.READ_ONLY.CompileStarteddisconnect fails by default.SCCACHE_IGNORE_SERVER_IO_ERROR=1remains the explicit opt-in to local fallback, including client-side lookup transport failure, without recompiling after write-only failure.cache_timeoutstelemetry on Unix and Windows.Compatibility
The client-side storage protocol is versioned. A client and daemon with incompatible storage RPC layouts fail during the handshake rather than interpreting an error as a miss.
The capability-check behavior intentionally reverses the rate-limit tolerance introduced by #1557. A rate-limited read or unavailable requested write capability can prevent server startup. Users who require read-only operation must configure it explicitly.
Validation
cargo fmt --checkcargo clippy --locked --all-targets -- -D warnings -A unknown-lints -A clippy::type_complexity -A clippy::new-without-defaultcargo check --locked --no-default-featurescargo check --locked --no-default-features --features s3cargo test --locked --lib