]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix lc process only schdule the first item of lc objects 17859/head
authorlu.shasha <lu.shasha@eisoo.com>
Thu, 17 Aug 2017 08:02:02 +0000 (16:02 +0800)
committerNathan Cutler <ncutler@suse.com>
Thu, 21 Sep 2017 03:54:45 +0000 (05:54 +0200)
If more than two bucket hash to the same lc object, only the first bucket will do lifecycle operation. Other buckets lifecycle will never be schduled.

Fixes: http://tracker.ceph.com/issues/21022
Signed-off-by: Shasha Lu <lu.shasha@eisoo.com>
(cherry picked from commit 9561dc0a903d9021f64857762e73887ffe46c28e)

src/rgw/rgw_lc.cc

index cad0304e3527cb15e5f5b8f1bed0fa9f21f0e077..cdcfaffff77cc7345352f5ff09f807e3f0a2755a 100644 (file)
@@ -202,8 +202,10 @@ bool RGWLC::if_already_run_today(time_t& start_date)
   localtime_r(&start_date, &bdt);
 
   if (cct->_conf->rgw_lc_debug_interval > 0) {
-         /* We're debugging, so say we can run */
-         return false;
+    if (now - start_date < cct->_conf->rgw_lc_debug_interval)
+      return true;
+    else
+      return false;
   }
 
   bdt.tm_hour = 0;
@@ -674,13 +676,11 @@ int RGWLC::process(int index, int max_lock_secs)
     l.unlock(&store->lc_pool_ctx, obj_names[index]);
     ret = bucket_lc_process(entry.first);
     bucket_lc_post(index, max_lock_secs, entry, ret);
-    return 0;
+  }while(1);
+
 exit:
     l.unlock(&store->lc_pool_ctx, obj_names[index]);
     return 0;
-
-  }while(1);
-
 }
 
 void RGWLC::start_processor()