From f272a57fdbafff9074dd9a4f07ec167692eb27d9 Mon Sep 17 00:00:00 2001 From: Pritha Srivastava Date: Wed, 24 Nov 2021 13:40:17 +0530 Subject: [PATCH] rgw: oids must not be prefixed in case of read_info and store_info since that gets taken care of the meta_be->put() and meta_be->get(). Signed-off-by: Pritha Srivastava --- src/rgw/rgw_sal_rados.cc | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/src/rgw/rgw_sal_rados.cc b/src/rgw/rgw_sal_rados.cc index 8b46f6550be8f..64058bba72e73 100644 --- a/src/rgw/rgw_sal_rados.cc +++ b/src/rgw/rgw_sal_rados.cc @@ -3072,11 +3072,7 @@ int RadosRole::store_info(const DoutPrefixProvider *dpp, bool exclusive, optiona using ceph::encode; std::string oid; - if (addprefix) { - oid = get_info_oid_prefix() + info.id; - } else { - oid = info.id; - } + oid = info.id; bufferlist bl; encode(this->info, bl); @@ -3172,29 +3168,21 @@ int RadosRole::read_info(const DoutPrefixProvider *dpp, optional_yield y, bool a { auto obj_ctx = store->svc()->sysobj->init_obj_ctx(); std::string oid; - if (addprefix) { - oid = get_info_oid_prefix() + info.id; - } else { - oid = info.id; - } + + oid = info.id; + ldpp_dout(dpp, 20) << "INFO: oid in read_info is: " << oid << dendl; + bufferlist bl; RGWSI_MBSObj_GetParams params(&bl, &info.attrs, &info.mtime); std::unique_ptr ctx(store->svc()->role->svc.meta_be->alloc_ctx()); ctx->init(store->svc()->role->get_be_handler()); - int ret = store->svc()->role->svc.meta_be->get_entry(ctx.get(), oid, params, &info.objv_tracker, y, dpp); + int ret = store->svc()->role->svc.meta_be->get(ctx.get(), oid, params, &info.objv_tracker, y, dpp); if (ret < 0) { ldpp_dout(dpp, 0) << "ERROR: failed reading role info from Role pool: " << info.id << ": " << cpp_strerror(-ret) << dendl; return ret; } -#if 0 - int ret = rgw_get_system_obj(obj_ctx, store->get_zone()->get_params().roles_pool, oid, bl, &info.objv_tracker, &info.mtime, null_yield, dpp, &info.attrs, nullptr, boost::none, true); - if (ret < 0) { - ldpp_dout(dpp, 0) << "ERROR: failed reading role info from Role pool: " << info.id << ": " << cpp_strerror(-ret) << dendl; - return ret; - } -#endif try { using ceph::decode; auto iter = bl.cbegin(); @@ -3240,12 +3228,14 @@ int RadosRole::create(const DoutPrefixProvider *dpp, bool exclusive, optional_yi return ret; } - /* create unique id */ - uuid_d new_uuid; - char uuid_str[37]; - new_uuid.generate_random(); - new_uuid.print(uuid_str); - info.id = uuid_str; + if (info.id.empty()) { + /* create unique id */ + uuid_d new_uuid; + char uuid_str[37]; + new_uuid.generate_random(); + new_uuid.print(uuid_str); + info.id = uuid_str; + } //arn info.arn = role_arn_prefix + info.tenant + ":role" + info.path + info.name; -- 2.39.5