From: lvshuhua Date: Thu, 19 Sep 2019 06:09:50 +0000 (+0800) Subject: RGW: fix an endless loop error when to show usage X-Git-Tag: v14.2.8~20^2~76^2~8^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F31684%2Fhead;p=ceph.git RGW: fix an endless loop error when to show usage Fix: https://tracker.ceph.com/issues/41926 Signed-off-by: lvshuhua (cherry picked from commit 9f85629f45e6e3f54db1735c78dc2a4535f10a5e) --- diff --git a/src/cls/rgw/cls_rgw.cc b/src/cls/rgw/cls_rgw.cc index fd707eeea9b..d7f61fdd3e0 100644 --- a/src/cls/rgw/cls_rgw.cc +++ b/src/cls/rgw/cls_rgw.cc @@ -2964,11 +2964,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; @@ -3002,12 +3000,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; @@ -3041,12 +3038,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; }