From: Orit Wasserman Date: Tue, 11 Oct 2016 12:18:29 +0000 (+0200) Subject: rgw: avoid corruption when running old radosgw-admin on a newer rgw X-Git-Tag: v11.1.0~653^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F11426%2Fhead;p=ceph.git rgw: avoid corruption when running old radosgw-admin on a newer rgw Fixes:http://tracker.ceph.com/issues/17371 Signed-off-by: Orit Wasserman --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 2885ad44e358..80ebc273c0fc 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3548,6 +3548,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); @@ -3583,6 +3592,7 @@ int RGWRados::replace_region_with_zonegroup() } for (map::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();