]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RGW: fix an endless loop error when to show usage 30470/head
authorlvshuhua <lvshuhua@cmss.chinamobile.com>
Thu, 19 Sep 2019 06:09:50 +0000 (14:09 +0800)
committerlvshuhua <lvshuhua@cmss.chinamobile.com>
Thu, 19 Sep 2019 07:29:24 +0000 (15:29 +0800)
Fix: https://tracker.ceph.com/issues/41926
Signed-off-by: lvshuhua <lvshuhua@cmss.chinamobile.com>
src/cls/rgw/cls_rgw.cc

index 0486bbd6c12317c2197ebe6da8503532f91dedd5..77bd1b77045713cd0f080daa937ea8fdb30599d4 100644 (file)
@@ -2973,11 +2973,9 @@ static int usage_iterate_range(cls_method_context_t hctx, uint64_t start, uint64
   CLS_LOG(10, "usage_iterate_range");
 
   map<string, bufferlist> keys;
-#define NUM_KEYS 32
   string filter_prefix;
   string start_key, end_key;
   bool by_user = !user.empty();
-  uint32_t i = 0;
   string user_key;
   bool truncated_status = false;
 
@@ -3011,12 +3009,11 @@ static int usage_iterate_range(cls_method_context_t hctx, uint64_t start, uint64
   if (iter == keys.end())
     return 0;
 
-  uint32_t num_keys = keys.size();
-
-  for (; iter != keys.end(); ++iter,++i) {
+  for (; iter != keys.end(); ++iter) {
     const string& key = iter->first;
     rgw_usage_log_entry e;
 
+    key_iter = key;
     if (!by_user && key.compare(end_key) >= 0) {
       CLS_LOG(20, "usage_iterate_range reached key=%s, done", key.c_str());
       *truncated = false;
@@ -3050,12 +3047,6 @@ static int usage_iterate_range(cls_method_context_t hctx, uint64_t start, uint64
     ret = cb(hctx, key, e, param);
     if (ret < 0)
       return ret;
-
-
-    if (i == num_keys - 1) {
-      key_iter = key;
-      return 0;
-    }
   }
   return 0;
 }