]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix get sync policy handler if bucket_id is empty
authorYehuda Sadeh <yehuda@redhat.com>
Tue, 1 Dec 2020 20:44:29 +0000 (12:44 -0800)
committerAdam C. Emerson <aemerson@redhat.com>
Fri, 13 Jan 2023 13:27:47 +0000 (08:27 -0500)
Fixes: https://tracker.ceph.com/issues/48416
bucket was passed in without bucket_id, now reading entrypoint
info if needed.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/services/svc_bucket_sync_sobj.cc

index 4a29d2982af25e35447d90fd5d6ffbe8995b601b..c84ebc23f4dba4d745209494ba447adb126132cf 100644 (file)
@@ -171,7 +171,29 @@ int RGWSI_Bucket_Sync_SObj::do_get_policy_handler(RGWSI_Bucket_X_Ctx& ctx,
     return 0;
   }
 
-  auto& bucket = *_bucket;
+  auto bucket = *_bucket;
+
+  if (bucket.bucket_id.empty()) {
+    RGWBucketEntryPoint ep_info;
+    int ret = svc.bucket_sobj->read_bucket_entrypoint_info(ctx.ep,
+                                                           RGWSI_Bucket::get_entrypoint_meta_key(bucket),
+                                                           &ep_info,
+                                                           nullptr, /* objv_tracker */
+                                                           nullptr, /* mtime */
+                                                           nullptr, /* attrs */
+                                                           y,
+                                                           dpp,
+                                                           nullptr, /* cache_info */
+                                                           boost::none /* refresh_version */);
+    if (ret < 0) {
+      if (ret != -ENOENT) {
+        ldout(cct, 0) << "ERROR: svc.bucket->read_bucket_info(bucket=" << bucket << ") returned r=" << ret << dendl;
+      }
+      return ret;
+    }
+
+    bucket = ep_info.bucket;
+  }
 
   string zone_key;
   string bucket_key;