]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: log_meta only for more than one zone
authorOrit Wasserman <owasserm@redhat.com>
Wed, 21 Jun 2017 09:37:21 +0000 (12:37 +0300)
committerOrit Wasserman <owasserm@redhat.com>
Thu, 22 Jun 2017 10:05:31 +0000 (13:05 +0300)
Fixes: http://tracker.ceph.com/issues/20357
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_rados.h

index 9018cbbf392f86286ab536715ad910fa5e4e13c0..ce1678e4d4c692be09f06d614164cd1689926a79 100644 (file)
@@ -1874,6 +1874,22 @@ public:
       return (period_map.zonegroups.size() == 1);
   }
 
+  /*
+    returns true if there are several zone groups with a least one zone
+   */
+  bool is_multi_zonegroups_with_zones()
+  {
+    int count = 0;
+    for (const auto& zg:  period_map.zonegroups) {
+      if (zg.second.zones.size() > 0) {
+       if (count++ > 0) {
+         return true;
+       }
+      }
+    }
+    return false;
+  }
+
   int get_latest_epoch(epoch_t& epoch);
   int set_latest_epoch(epoch_t epoch, bool exclusive = false);
 
@@ -3570,7 +3586,8 @@ public:
   }
 
   bool need_to_log_metadata() {
-    return is_meta_master() && get_zone().log_meta;
+    return is_meta_master() &&
+      (get_zonegroup().zones.size() > 1 || current_period.is_multi_zonegroups_with_zones());
   }
 
   librados::Rados* get_rados_handle();