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. |
❌ 2 Tests Failed:
View the full list of 2 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
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
|
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.
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
68d7282 to
68b4bac
Compare
|
LGTM |
|
/approve |
|
I have successfully merged the changeset of this pull request
The following branches have NOT changed:
This pull request did not target the following hotfix branch(es) so they
Please check the status of the associated issue CLDSRV-888. Goodbye maeldonn. The following options are set: approve |
Issue: CLDSRV-888