return found_in_cache;
}
-int D4NFilterObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp,
- rgw_obj* target_obj)
+int D4NFilterObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp)
{
bool is_latest_version = true;
if (this->have_instance()) {
rgw::sal::Attrs attrs;
std::string version;
ldpp_dout(dpp, 10) << "D4NFilterObject::" << __func__ << "(): Fetching attrs from backend store." << dendl;
- auto ret = next->get_obj_attrs(y, dpp, target_obj);
- if (ret < 0 || !target_obj) {
- if (!target_obj) {
- ret = -ENOENT;
- }
+ auto ret = next->get_obj_attrs(y, dpp);
+ if (ret < 0) {
ldpp_dout(dpp, 0) << "D4NFilterObject::" << __func__ << "(): Failed to fetching attrs from backend store with ret: " << ret << dendl;
return ret;
}
this->load_obj_state(dpp, y);
- this->obj = *target_obj;
+ this->obj = next->get_obj();
if (!this->obj.key.instance.empty()) {
this->set_instance(this->obj.key.instance);
}
{
rgw::sal::Attrs& attrs = source->get_attrs();
if (attrs.empty()) {
- rgw_obj obj = source->get_obj();
- auto ret = source->get_obj_attrs(y, dpp, &obj);
+ auto ret = source->get_obj_attrs(y, dpp);
if (ret < 0) {
ldpp_dout(dpp, 0) << "D4NFilterObject::" << __func__ << "(): Error: failed to fetch attrs, ret=" << ret << dendl;
return ret;
bool follow_olh = true) override;
virtual int set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs,
Attrs* delattrs, optional_yield y, uint32_t flags) override;
- virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp,
- rgw_obj* target_obj = NULL) override;
+ virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp) override;
virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val,
optional_yield y, const DoutPrefixProvider* dpp,
uint32_t flags = rgw::sal::FLAG_LOG_OP) override;
return 0;
}
-int POSIXObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp,
- rgw_obj* target_obj)
+int POSIXObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp)
{
//int fd;
virtual int load_obj_state(const DoutPrefixProvider* dpp, optional_yield y, bool follow_olh = true) override;
virtual int set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs,
Attrs* delattrs, optional_yield y, uint32_t flags) override;
- virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp,
- rgw_obj* target_obj = NULL) override;
+ virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp) override;
virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val,
optional_yield y, const DoutPrefixProvider* dpp,
uint32_t flags = rgw::sal::FLAG_LOG_OP) override;
y, log_op, mtime);
}
-int RadosObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp, rgw_obj* target_obj)
+int RadosObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp)
{
RGWRados::Object op_target(store->getRados(), bucket->get_info(), *rados_ctx, get_obj());
RGWRados::Object::Read read_op(&op_target);
- return read_attrs(dpp, read_op, y, target_obj);
+ return read_attrs(dpp, read_op, y);
}
int RadosObject::modify_obj_attrs(const char* attr_name, bufferlist& attr_val, optional_yield y, const DoutPrefixProvider* dpp, uint32_t flags)
{
rgw_obj target = get_obj();
rgw_obj save = get_obj();
- int r = get_obj_attrs(y, dpp, &target);
+ RGWRados::Object op_target(store->getRados(), bucket->get_info(), *rados_ctx, get_obj());
+ RGWRados::Object::Read read_op(&op_target);
+
+ int r = read_attrs(dpp, read_op, y, &target);
if (r < 0) {
return r;
}
optional_yield y) override;
virtual int set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs, Attrs* delattrs, optional_yield y, uint32_t flags) override;
- virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp, rgw_obj* target_obj = NULL) override;
+ virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp) override;
virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val, optional_yield y, const DoutPrefixProvider* dpp,
uint32_t flags = rgw::sal::FLAG_LOG_OP) override;
virtual int delete_obj_attrs(const DoutPrefixProvider* dpp, const char* attr_name, optional_yield y) override;
* deleted. @note the attribute APIs may be revisited in the future. */
virtual int set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs, Attrs* delattrs, optional_yield y, uint32_t flags) = 0;
/** Get attributes for this object */
- virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp, rgw_obj* target_obj = NULL) = 0;
+ virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp) = 0;
/** Modify attributes for this object. */
virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val, optional_yield y, const DoutPrefixProvider* dpp,
uint32_t flags = rgw::sal::FLAG_LOG_OP) = 0;
return op_target.set_attrs(dpp, setattrs ? *setattrs : empty, delattrs);
}
- int DBObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp, rgw_obj* target_obj)
+ int DBObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp)
{
DB::Object op_target(store->getDB(), get_bucket()->get_info(), get_obj());
DB::Object::Read read_op(&op_target);
- return read_attrs(dpp, read_op, y, target_obj);
+ return read_attrs(dpp, read_op, y, nullptr);
}
int DBObject::modify_obj_attrs(const char* attr_name, bufferlist& attr_val, optional_yield y, const DoutPrefixProvider* dpp, uint32_t flags)
{
rgw_obj target = get_obj();
- int r = get_obj_attrs(y, dpp, &target);
+ DB::Object op_target(store->getDB(), get_bucket()->get_info(), get_obj());
+ DB::Object::Read read_op(&op_target);
+
+ int r = read_attrs(dpp, read_op, y, &target);
if (r < 0) {
return r;
}
bool is_sync_completed(const DoutPrefixProvider* dpp, optional_yield y,
const ceph::real_time& obj_mtime) override;
virtual int load_obj_state(const DoutPrefixProvider* dpp, optional_yield y, bool follow_olh = true) override;
- virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp, rgw_obj* target_obj = NULL) override;
+ virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp) override;
virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val, optional_yield y, const DoutPrefixProvider* dpp,
uint32_t flags = rgw::sal::FLAG_LOG_OP) override;
virtual int delete_obj_attrs(const DoutPrefixProvider* dpp, const char* attr_name, optional_yield y) override;
return next->set_obj_attrs(dpp, setattrs, delattrs, y, flags);
}
-int FilterObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp,
- rgw_obj* target_obj)
+int FilterObject::get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp)
{
- return next->get_obj_attrs(y, dpp, target_obj);
+ return next->get_obj_attrs(y, dpp);
}
int FilterObject::modify_obj_attrs(const char* attr_name, bufferlist& attr_val,
bool follow_olh = true) override;
virtual int set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs,
Attrs* delattrs, optional_yield y, uint32_t flags) override;
- virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp,
- rgw_obj* target_obj = NULL) override;
+ virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp) override;
virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val,
optional_yield y, const DoutPrefixProvider* dpp,
uint32_t flags = rgw::sal::FLAG_LOG_OP) override;
EXPECT_EQ(testData, "test data");
// Ensure attr is not modified
- rgw_obj copyObj = destObj->get_obj();
- ASSERT_EQ(destObj->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObj->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObj->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "test_value");
EXPECT_EQ(testData, "test data");
// Ensure attr is merged
- rgw_obj copyObj = destObj->get_obj();
- ASSERT_EQ(destObj->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObj->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObj->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "copy_value");
EXPECT_EQ(testData, "test data");
// Ensure attr is replaced
- rgw_obj copyObj = destObj->get_obj();
- ASSERT_EQ(destObj->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObj->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObj->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "copy_value");
EXPECT_EQ(fs::exists(CACHE_DIR + "/" + TEST_BUCKET + testName + "/" + destNameEnabled + "/" + oid, err), true);
// Ensure attr is not modified
- rgw_obj copyObj = destObjEnabled->get_obj();
- ASSERT_EQ(destObjEnabled->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObjEnabled->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObjEnabled->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "test_value");
EXPECT_EQ(fs::exists(CACHE_DIR + "/" + TEST_BUCKET + testName + "/" + destNameSuspended + "/" + oid, err), true);
// Ensure attr is not modified
- rgw_obj copyObj = destObjSuspended->get_obj();
- ASSERT_EQ(destObjSuspended->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObjSuspended->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObjSuspended->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "test_value");
EXPECT_EQ(fs::exists(CACHE_DIR + "/" + TEST_BUCKET + testName + "/" + destNameEnabled + "/" + oid, err), true);
// Ensure attr is merged
- rgw_obj copyObj = destObjEnabled->get_obj();
- ASSERT_EQ(destObjEnabled->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObjEnabled->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObjEnabled->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "copy_value");
EXPECT_EQ(fs::exists(CACHE_DIR + "/" + TEST_BUCKET + testName + "/" + destNameSuspended + "/" + oid, err), true);
// Ensure attr is merged
- rgw_obj copyObj = destObjSuspended->get_obj();
- ASSERT_EQ(destObjSuspended->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObjSuspended->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObjSuspended->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "copy_value");
EXPECT_EQ(fs::exists(CACHE_DIR + "/" + TEST_BUCKET + testName + "/" + destNameEnabled + "/" + oid, err), true);
// Ensure attr is replaced
- rgw_obj copyObj = destObjEnabled->get_obj();
- ASSERT_EQ(destObjEnabled->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObjEnabled->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObjEnabled->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "copy_value");
EXPECT_EQ(fs::exists(CACHE_DIR + "/" + TEST_BUCKET + testName + "/" + destNameSuspended + "/" + oid, err), true);
// Ensure attr is replaced
- rgw_obj copyObj = destObjSuspended->get_obj();
- ASSERT_EQ(destObjSuspended->get_obj_attrs(optional_yield{yield}, env->dpp, ©Obj), 0);
+ ASSERT_EQ(destObjSuspended->get_obj_attrs(optional_yield{yield}, env->dpp), 0);
rgw::sal::Attrs copyAttrs = destObjSuspended->get_attrs();
buffer::list val = copyAttrs["user.rgw.test_attr"];
EXPECT_EQ(val.to_str(), "copy_value");