Skip non-localized entries in replication and lifecycle - #2827
Closed
francoisferrand wants to merge 2 commits into
Closed
Skip non-localized entries in replication and lifecycle#2827francoisferrand wants to merge 2 commits into
francoisferrand wants to merge 2 commits into
Conversation
In a clean room, an object's metadata is local but its data still lives on the source cluster: dataStoreName points at an isCRR location. Such a version has nothing local to offer, so the existing workflows must leave it alone until localization has rewritten the metadata. The replication populator already diverted those entries to localization, but only when localization was configured; otherwise they fell through and got replicated, which would copy a location the target cannot read. Skip them in both cases. Nothing is lost: the localization merge produces a new oplog entry with the real location, and replication picks it up then. Lifecycle transitions get the same treatment. Localization is the only valid transition out of an isCRR location and it has its own trigger, so a transition rule matching such a version is simply skipped and the version re-evaluated on a later scan. Issue: BB-816
Codecov Report❌ Patch coverage is
Additional details and impacted files
... and 3 files with indirect coverage changes
@@ Coverage Diff @@
## improvement/BB-814 #2827 +/- ##
======================================================
- Coverage 75.37% 75.06% -0.32%
======================================================
Files 200 200
Lines 13999 14003 +4
======================================================
- Hits 10552 10511 -41
- Misses 3437 3482 +45
Partials 10 10
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
francoisferrand
deleted the
francoisferrand-improvement/BB-816-skip-non-localized-en
branch
August 24, 2026 12:22
This was referenced Aug 24, 2026
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.
Stacked on #2826 (BB-814), which added the localization trigger. Base branch is
francoisferrand-improvement/BB-814, review that one first.In a clean room, an object's metadata is local but its data still lives on the source cluster:
dataStoreNamepoints at anisCRRlocation. Such a version has nothing local to offer, so the workflows that would otherwise pick it up must leave it alone until localization has rewritten the metadata with a real local location.Replication: the populator already diverted those entries to localization, but only when localization was configured. Without it they fell through and got replicated, which would hand the target a location it cannot read. They are now skipped in both cases. Nothing is lost, since the localization merge produces a new oplog entry carrying the real location, and replication picks it up then.
Lifecycle transitions: same idea. Localization is the only valid transition out of an
isCRRlocation and it has its own trigger (the queue populator), not lifecycle rules. A transition rule matching such a version is skipped, and the version is simply re-evaluated on a later scan.Design doc: https://citadel.scality.net/design/replication/zenko-full-dr/#copy-trigger
Issue: BB-816