]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: bucket sync: find first key with longest matching prefix
authorYehuda Sadeh <yehuda@redhat.com>
Tue, 21 Jan 2020 20:03:32 +0000 (12:03 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Tue, 28 Jan 2020 18:20:40 +0000 (10:20 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_bucket_sync.cc

index da4556a8b6de5dbfc692fc2e5d6bd17c687c4f0f..c120991af25240bdf1affa0dd4879c605a84a5dc 100644 (file)
@@ -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<decltype(iter)> iters;