]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: clear old zone short ids on period update 13949/head
authorCasey Bodley <cbodley@redhat.com>
Thu, 9 Mar 2017 20:24:08 +0000 (15:24 -0500)
committerCasey Bodley <cbodley@redhat.com>
Mon, 13 Mar 2017 19:51:12 +0000 (15:51 -0400)
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>
src/rgw/rgw_rados.cc

index af00d1980ce9653c1ed1625ac7b33dbb30b8b64f..4cb6c5815f7eff7711d2774a2aec54e579cafb43 100644 (file)
@@ -1302,6 +1302,10 @@ int RGWPeriod::update()
     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);