]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: avoid corruption when running old radosgw-admin on a newer rgw 11519/head
authorOrit Wasserman <owasserm@redhat.com>
Tue, 11 Oct 2016 12:18:29 +0000 (14:18 +0200)
committerLoic Dachary <ldachary@redhat.com>
Mon, 17 Oct 2016 11:04:51 +0000 (13:04 +0200)
Fixes:http://tracker.ceph.com/issues/17371
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
(cherry picked from commit 8eab9454b4d45ed8092a1292bd1904ef928c2120)

src/rgw/rgw_rados.cc

index 6db8302dcf352f523f2f92810fe044fa0b77d6e4..d356fb81ad8edd5b1bb67f1f136114b62000b2e5 100644 (file)
@@ -3434,6 +3434,15 @@ int RGWRados::replace_region_with_zonegroup()
   /* create zonegroups */
   for (iter = regions.begin(); iter != regions.end(); ++iter)
   {
+    ldout(cct, 0) << "Converting  " << *iter << dendl;
+    /* check to see if we don't have already a zonegroup with this name */
+    RGWZoneGroup new_zonegroup(*iter);
+    ret = new_zonegroup.init(cct , this);
+    if (ret == 0 && new_zonegroup.get_id() != *iter) {
+      ldout(cct, 0) << "zonegroup  "<< *iter << " already exists id " << new_zonegroup.get_id () <<
+       " skipping conversion " << dendl;
+      continue;
+    }
     RGWZoneGroup zonegroup(*iter);
     zonegroup.set_id(*iter);
     int ret = zonegroup.init(cct, this, true, true);
@@ -3469,6 +3478,7 @@ int RGWRados::replace_region_with_zonegroup()
     }
     for (map<string, RGWZone>::const_iterator iter = zonegroup.zones.begin(); iter != zonegroup.zones.end();
          iter ++) {
+      ldout(cct, 0) << "Converting zone" << iter->first << dendl;
       RGWZoneParams zoneparams(iter->first, iter->first);
       zoneparams.set_id(iter->first);
       zoneparams.realm_id = realm.get_id();