From 9f774b4dec68888a100926e19fc3bfd31215a6ae Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 1 Dec 2020 12:44:29 -0800 Subject: [PATCH] rgw: fix get sync policy handler if bucket_id is empty 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 --- src/rgw/services/svc_bucket_sync_sobj.cc | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/rgw/services/svc_bucket_sync_sobj.cc b/src/rgw/services/svc_bucket_sync_sobj.cc index 4a29d2982af25..c84ebc23f4dba 100644 --- a/src/rgw/services/svc_bucket_sync_sobj.cc +++ b/src/rgw/services/svc_bucket_sync_sobj.cc @@ -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; -- 2.39.5