]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: disable dynamic resharding in multisite environment 18184/head
authorOrit Wasserman <owasserm@redhat.com>
Mon, 9 Oct 2017 10:25:36 +0000 (13:25 +0300)
committerOrit Wasserman <owasserm@redhat.com>
Wed, 11 Oct 2017 15:25:51 +0000 (18:25 +0300)
Fixes:http://tracker.ceph.com/issues/21725
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_rados.h
src/rgw/rgw_reshard.cc

index 220aa5e90a2f3b14953102661112161e9b31b6b4..3d20912488a26e96d9816155cf3433ddd318b2f4 100644 (file)
@@ -1861,7 +1861,7 @@ public:
   int get_zonegroup(RGWZoneGroup& zonegroup,
                    const string& zonegroup_id);
 
-  bool is_single_zonegroup()
+  bool is_single_zonegroup() const
   {
       return (period_map.zonegroups.size() == 1);
   }
@@ -3600,6 +3600,11 @@ public:
       (get_zonegroup().zones.size() > 1 || current_period.is_multi_zonegroups_with_zones());
   }
 
+  bool can_reshard() const {
+    return current_period.get_id().empty() ||
+      (zonegroup.zones.size() == 1 && current_period.is_single_zonegroup());
+  }
+
   librados::Rados* get_rados_handle();
 
   int delete_raw_obj_aio(const rgw_raw_obj& obj, list<librados::AioCompletion *>& handles);
index 0389ca33dce293c4fba356db6b3568d5416b1e76..a3a712c767234f2cf414c7fd12c7d212efdb062d 100644 (file)
@@ -595,6 +595,11 @@ void RGWReshard::get_bucket_logshard_oid(const string& tenant, const string& buc
 
 int RGWReshard::add(cls_rgw_reshard_entry& entry)
 {
+  if (!store->can_reshard()) {
+    ldout(store->ctx(), 20) << __func__ << " Resharding is disabled"  << dendl;
+    return 0;
+  }
+
   string logshard_oid;
 
   get_bucket_logshard_oid(entry.tenant, entry.bucket_name, &logshard_oid);
@@ -856,6 +861,10 @@ void  RGWReshard::get_logshard_oid(int shard_num, string *logshard)
 
 int RGWReshard::process_all_logshards()
 {
+  if (!store->can_reshard()) {
+    ldout(store->ctx(), 20) << __func__ << " Resharding is disabled"  << dendl;
+    return 0;
+  }
   int ret = 0;
 
   for (int i = 0; i < num_logshards; i++) {
@@ -899,14 +908,11 @@ void *RGWReshard::ReshardWorker::entry() {
   utime_t last_run;
   do {
     utime_t start = ceph_clock_now();
-    ldout(cct, 2) << "object expiration: start" << dendl;
     if (reshard->process_all_logshards()) {
       /* All shards have been processed properly. Next time we can start
        * from this moment. */
       last_run = start;
     }
-    ldout(cct, 2) << "object expiration: stop" << dendl;
-
 
     if (reshard->going_down())
       break;