feat(rc-mirror)!: support local paths and parity controls#274
Draft
cxymds wants to merge 1 commit into
Draft
Conversation
cxymds
force-pushed
the
cxymds/issue-1373-mirror
branch
from
July 21, 2026 09:41
9d7766c to
3bc69b3
Compare
cxymds
force-pushed
the
cxymds/issue-1373-mirror
branch
from
July 21, 2026 09:51
3bc69b3 to
81b4f39
Compare
cxymds
force-pushed
the
cxymds/issue-1373-mirror
branch
from
July 21, 2026 10:45
81b4f39 to
e246515
Compare
cxymds
force-pushed
the
cxymds/issue-1373-mirror
branch
from
July 21, 2026 11:21
e246515 to
66421c4
Compare
Member
Author
|
Exact-head RustFS latest validation for 66421c4 is complete.
Run: https://github.com/rustfs/cli/actions/runs/29825904100 The previous exact head had 60 passed and four mirror failures, so the bare-404 HeadObject regression fix closes the complete mirror delta. |
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.
Refs rustfs/backlog#1373
Background and user impact
The legacy rc mirror implementation accepted only remote roots, used an unbounded command-specific scheduler, and copied remote objects through whole-object memory buffers. It lacked safe local backup/restore workflows, shared filtering and retry controls, and conditional destination mutation.
What changed
Root cause of the RustFS mirror E2E failure
The first exact-head full integration run reached 60 passing tests and 7 failures. Three were the known SSE-S3 RustFS baseline. The four mirror write failures occurred before upload: mirror rechecks the destination with HeadObject, RustFS returned a bare HTTP 404 for a missing object, and the AWS SDK display string was only service error. The old classifier searched that string for NotFound or NoSuchKey and incorrectly returned a retryable network error. The new classifier reads the raw HTTP status and service error code, with a regression test for an empty-body 404.
RustFS compatibility
RustFS origin/main at bb7bba32376356fede5b1afdfdfce4c3a40df9dc evaluates If-Match and If-None-Match during CompleteMultipartUpload and carries reliant conditional-write E2E coverage.
BREAKING behavior and migration
This PR updates the protected mirror behavior contract and is marked BREAKING. Mirror no longer falls back to unconditional remote copy when source metadata lookup fails, and missing ETags are never treated as equality. Prefer --concurrency; --parallel remains a visible compatibility alias. Output schemas, config schema, and exit-code definitions are unchanged.
Dependency chain
Validation
The updated exact head is 66421c4 and is queued for CI plus manual full integration against RustFS latest.