From 9f85629f45e6e3f54db1735c78dc2a4535f10a5e Mon Sep 17 00:00:00 2001 From: lvshuhua Date: Thu, 19 Sep 2019 14:09:50 +0800 Subject: [PATCH] RGW: fix an endless loop error when to show usage Fix: https://tracker.ceph.com/issues/41926 Signed-off-by: lvshuhua --- src/cls/rgw/cls_rgw.cc | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/cls/rgw/cls_rgw.cc b/src/cls/rgw/cls_rgw.cc index 0486bbd6c12..77bd1b77045 100644 --- a/src/cls/rgw/cls_rgw.cc +++ b/src/cls/rgw/cls_rgw.cc @@ -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 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; } -- 2.47.3