From: Yehuda Sadeh Date: Tue, 21 Jan 2020 20:03:32 +0000 (-0800) Subject: rgw: bucket sync: find first key with longest matching prefix X-Git-Tag: v15.1.0~22^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3a8eea48b79f39f41b005f946aec82b5bc8fa3aa;p=ceph.git rgw: bucket sync: find first key with longest matching prefix Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_bucket_sync.cc b/src/rgw/rgw_bucket_sync.cc index da4556a8b6de..c120991af252 100644 --- a/src/rgw/rgw_bucket_sync.cc +++ b/src/rgw/rgw_bucket_sync.cc @@ -307,7 +307,8 @@ bool RGWBucketSyncFlowManager::pipe_rules::find_basic_info_without_tags(const rg return false; } - auto iter = prefix_refs.upper_bound(key.name); + auto end = prefix_refs.upper_bound(key.name); + auto iter = end; if (iter != prefix_refs.begin()) { --iter; } @@ -315,7 +316,10 @@ bool RGWBucketSyncFlowManager::pipe_rules::find_basic_info_without_tags(const rg return false; } - auto end = prefix_refs.upper_bound(key.name); + if (iter != prefix_refs.begin()) { + iter = prefix_refs.find(iter->first); /* prefix_refs is multimap, find first element + holding that key */ + } std::vector iters;