the short ids of old, removed zones were being kept in the period to
guard against hash collisions with new zones
but for a hash collision to cause a wrong object to sync, that object
would have to be uploaded simultaneously to two different zones that had
the same short id
to avoid this, we just have to prevent the period from containing two
colliding zones at the same time - we don't have to remember old zone
short ids forever
Fixes: http://tracker.ceph.com/issues/15618
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit
9c45633c836c966ab1f75ea2b1ad3fa0a4886600)
return ret;
}
+ // clear zone short ids of removed zones. period_map.update() will add the
+ // remaining zones back
+ period_map.short_zone_ids.clear();
+
for (auto& iter : zonegroups) {
RGWZoneGroup zg(string(), iter);
ret = zg.init(cct, store);