-
Notifications
You must be signed in to change notification settings - Fork 0
cloud: harden and prove SST range identity pinning and extend provider qualification coverage #346
Copy link
Copy link
Open
Labels
area:cloudReal cloud provider backendsReal cloud provider backendsarea:read-pathBlock cache and bloom filter performanceBlock cache and bloom filter performanceparity-gapFeature not yet at parity with MidgeFeature not yet at parity with Midgepriority:P3Deferred: blocked or intentionally postponed until an explicit prerequisite is metDeferred: blocked or intentionally postponed until an explicit prerequisite is metstatus:needs-decisionDifference may be a legitimate adaptation; needs an explicit maintainer/spec decisionDifference may be a legitimate adaptation; needs an explicit maintainer/spec decision
Description
Activity
Metadata
Metadata
Assignees
Labels
area:cloudReal cloud provider backendsReal cloud provider backendsarea:read-pathBlock cache and bloom filter performanceBlock cache and bloom filter performanceparity-gapFeature not yet at parity with MidgeFeature not yet at parity with Midgepriority:P3Deferred: blocked or intentionally postponed until an explicit prerequisite is metDeferred: blocked or intentionally postponed until an explicit prerequisite is metstatus:needs-decisionDifference may be a legitimate adaptation; needs an explicit maintainer/spec decisionDifference may be a legitimate adaptation; needs an explicit maintainer/spec decision
Prior: #222 (closed-but-incomplete for coverage: an unsafe OCI endpoint override is never tested through open), #7 (related)
Midge: conditional SST range reads send If-Match or x-goog-if-generation-match. The response must be 206, the
Content-Rangemust match exactlybytes s-e/<expected total size>, and a version mismatch isPreconditionFailed(storage/cloud/range.rs:6-48; s3.rs:1178-1240;test
should_reject_wrong_identity_or_range_when_body_has_valid_length). OCI endpoint validation at the backend boundary iscovered through
OpenOptions::build(398add2;tests/cloud_provider_validation.rs should_reject_unsafe_oci_endpoint_given_open_options_when_endpoint_is_overridden). Opt-in real-S3 qualification usesMIDGE_REAL_S3_*(providers/qualification.rs:20-25, :56;tests/cloud_provider_engine_qualification.rs:496). A partitioned-compactionround-trip and a partial-upload rollback run over Sqrzl (
cloud_provider_engine_qualification.rs:146, :165).Pants: range reads send no precondition. Identity is checked afterwards by comparing the returned ETag/generation
(
ProviderCloudSstSourceFactory.cs:94-98), and a mismatch raisesPantsCorruptionException, not a precondition/conflict error. TheContent-Range check covers start and end but not the total size (
CloudHttpResponseReader.cs:70-80). OCI endpoint validation runs at open(
PantsOpenOptions.cs:368-373→BuiltInCloudProviderValidator.cs:193, 392-414), butPantsCloudValidationTests.ShouldValidateFirstClassOciConfigurationAndRedactCredentialstests only a null endpoint. Qualification(
SqrzlCloudProviderQualificationTests,CloudProviderEngineQualificationTests) has no real-provider opt-in and no partitioned-compaction round-trip.Why it matters: detection is equivalent today, but the error class differs (corruption vs precondition), and requests that are not pinned
spend bandwidth on replaced objects. The coverage items guard the fix from Midge 398add2 and the real-provider behavior.
Acceptance criteria:
PantsOpenOptionsrejects OCI overrides with the ftp scheme, userinfo, a query, or a fragment, and that the error message contains no secret.