From caf08d731c7cec40fe6635189de877d1f047e8b4 Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Tue, 11 Oct 2016 14:18:29 +0200 Subject: [PATCH] rgw: avoid corruption when running old radosgw-admin on a newer rgw Fixes:http://tracker.ceph.com/issues/17371 Signed-off-by: Orit Wasserman (cherry picked from commit 8eab9454b4d45ed8092a1292bd1904ef928c2120) --- src/rgw/rgw_rados.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 6db8302dcf352..d356fb81ad8ed 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -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::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(); -- 2.39.5