Build multi-destination replicationInfo per backend#6172
Conversation
Hello maeldonn,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files
@@ Coverage Diff @@
## development/9.4 #6172 +/- ##
===================================================
- Coverage 85.46% 85.45% -0.01%
===================================================
Files 208 208
Lines 14077 14071 -6
===================================================
- Hits 12031 12025 -6
Misses 2046 2046
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
545c4b6 to
0ff3941
Compare
|
0ff3941 to
b98f98f
Compare
|
ConflictThere is a conflict between your branch Please resolve the conflict on the feature branch ( git fetch && \
git checkout origin/improvement/CLDSRV-888/crr-multi && \
git merge origin/development/9.4Resolve merge conflicts and commit git push origin HEAD:improvement/CLDSRV-888/crr-multi |
e9693df to
f98710c
Compare
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
Review by Claude Code |
f98710c to
a8a04b6
Compare
|
a8a04b6 to
e413e0b
Compare
|
e413e0b to
56ec2c4
Compare
56ec2c4 to
f3e8b07
Compare
|
19856b3 to
a1fd119
Compare
|
Match all enabled rules with the object's prefix (highest-priority wins on site collision) and stamp destination/role per CRR backend. Cloud backends get a bare entry — their bucket and credentials live in the location config. ACL replication uses per-backend `role` as the CRR marker so cloud backends keep their status. Legacy V1 and comma-separated `StorageClass` remain supported on read. Issue: CLDSRV-888
a1fd119 to
56b72f4
Compare
|
| } | ||
|
|
||
| const existing = objectMD.replicationInfo.backends.find(e => e.site === b.site); | ||
| return existing || b; |
There was a problem hiding this comment.
this still adds a newly configured cloud backend on an ACL-only update if there is also a CRR backend.
If cloud ACL replication is not supported, we should only preserve existing non-role backends, not add new ones as PENDING.
Maybe:
| return existing || b; | |
| const existing = objectMD.replicationInfo.backends.find(e => e.site === b.site); | |
| return existing; |
There was a problem hiding this comment.
Good catch, switched to dropping newly configured cloud backends instead of adding them as PENDING, and matching existing entries by site + destination + role rather than site alone.
| ); | ||
| }); | ||
|
|
||
| it('should add a newly configured CRR destination to backends on ' + 'putObjectACL', done => { |
There was a problem hiding this comment.
can we also have a test where a new cloud backend is added after the object was already replicated, then putObjectACL is called.
If ACL replication is not supported for cloud backends, that new cloud backend should not be added as PENDING.
There was a problem hiding this comment.
Added, new test asserts a cloud destination added after replication is not added as PENDING on putObjectACL.
|
b5dff90 to
68d7282
Compare
|
benzekrimaha
left a comment
There was a problem hiding this comment.
LGTM on the replication logic now, arsenal is still pinned to a raw commit hash; this should wait for the Arsenal tag and pin to that tag before merge. Will we need a package version bump?
delthas
left a comment
There was a problem hiding this comment.
LGTM on the surface but need a 2nd pair of eyes from someone having worked on replication.
| err => { | ||
| assertError(err, expectedErr); | ||
| }, | ||
| ); |
There was a problem hiding this comment.
Hmmm feels like many changes on this file belong to the prettier commit. Could you run prettier on those files in the 1st commit then rebase? s.t. we can isolate actual changes more easily.
Issue: CLDSRV-888