]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: allow init complete to proceed in case of erroneus zone deletes
authorAbhishek Lekshmanan <abhishek@suse.com>
Mon, 19 Nov 2018 16:21:15 +0000 (17:21 +0100)
committerAbhishek Lekshmanan <abhishek@suse.com>
Thu, 22 Nov 2018 10:53:55 +0000 (11:53 +0100)
Currently a master zone delete in a zonegroup followed by a period commit would
render RGWRados to be unusable, check if the zonegroup is empty and continue
initialization in these cases so that removal can proceed.

Fixes: http://tracker.ceph.com/issues/37328
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
(cherry picked from commit 58eb3545e4db2c9208fbc09789b89dd9d2ff7a71)

* src/rgw/services/svc_zone.cc
Changes are made to the same function in  rgw_rados.cc
as the rgw_rados refactor is post mimic

src/rgw/rgw_rados.cc

index f123514e470e29f3677cf63d4f394202cabfad7c..864518c4d34d6b64bcb9a063f532f1424d775645 100644 (file)
@@ -4258,6 +4258,9 @@ int RGWRados::init_zg_from_period(bool *initialized)
     // use endpoints from the zonegroup's master zone
     auto master = zg.zones.find(zg.master_zone);
     if (master == zg.zones.end()) {
+      // Check for empty zonegroup which can happen if zone was deleted before removal
+      if (zg.zones.size() == 0)
+        continue;
       // fix missing master zone for a single zone zonegroup
       if (zg.master_zone.empty() && zg.zones.size() == 1) {
        master = zg.zones.begin();