ldpp_dout(dpp, 20) << "D4N Filter: Cache delete operation succeeded." << dendl;
}
- return next->delete_obj(dpp, y);
+ return next->delete_obj(dpp, y, log_op);
}
int D4NFilterWriter::prepare(optional_yield y)
source(_source) {}
virtual ~D4NFilterDeleteOp() = default;
- virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op = true) override;
+ virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op) override;
};
D4NFilterObject(std::unique_ptr<Object> _next, D4NFilterDriver* _filter) : FilterObject(std::move(_next)),
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
bool is_atomic() { return atomic; };
const DoutPrefixProvider* dpp() { return save_dpp; }
};
DaosDeleteOp(DaosObject* _source);
virtual int delete_obj(const DoutPrefixProvider* dpp,
- optional_yield y, bool log_op = true) override;
+ optional_yield y, bool log_op) override;
};
ds3_obj_t* ds3o = nullptr;
const real_time& mtime, uint64_t olh_epoch,
const DoutPrefixProvider* dpp,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
virtual int transition_to_cloud(Bucket* bucket, rgw::sal::PlacementTier* tier,
rgw_bucket_dir_entry& o,
std::set<std::string>& cloud_targets,
const char* if_nomatch, const std::string* user_data,
rgw_zone_set* zones_trace, bool* canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class DaosMultipartWriter : public StoreWriter {
const char* if_nomatch, const std::string* user_data,
rgw_zone_set* zones_trace, bool* canceled,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
const std::string& get_bucket_name();
};
int num_parts, int marker, int* next_marker,
bool* truncated,
bool assume_unsorted = false) override;
- virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op = true) override;
+ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op) override;
virtual int complete(const DoutPrefixProvider* dpp, optional_yield y,
CephContext* cct, std::map<int, std::string>& part_etags,
std::list<rgw_obj_index_key>& remove_objs,
public:
MotrDeleteOp(MotrObject* _source);
- virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op = true) override;
+ virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op) override;
};
MotrObject() = default;
uint64_t olh_epoch,
const DoutPrefixProvider* dpp,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
virtual bool placement_rules_match(rgw_placement_rule& r1, rgw_placement_rule& r2) override;
virtual int dump_obj_layout(const DoutPrefixProvider *dpp, optional_yield y, Formatter* f) override;
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
unsigned populate_bvec(unsigned len, bufferlist::iterator &bi);
void cleanup();
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
};
// The implementation of multipart upload in POC roughly follows the
int num_parts, int marker,
int* next_marker, bool* truncated,
bool assume_unsorted = false) override;
- virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op = true) override;
+ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op) override;
virtual int complete(const DoutPrefixProvider* dpp,
optional_yield y, CephContext* cct,
std::map<int, std::string>& part_etags,
source(_source) {}
virtual ~POSIXDeleteOp() = default;
- virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op = true) override;
+ virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op) override;
};
POSIXObject(POSIXDriver *_dr, const rgw_obj_key& _k)
uint64_t olh_epoch,
const DoutPrefixProvider* dpp,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
virtual int transition_to_cloud(Bucket* bucket,
rgw::sal::PlacementTier* tier,
rgw_bucket_dir_entry& o,
int num_parts, int marker,
int* next_marker, bool* truncated, optional_yield y,
bool assume_unsorted = false) override;
- virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op = true) override;
+ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op) override;
virtual int complete(const DoutPrefixProvider* dpp,
optional_yield y, CephContext* cct,
std::map<int, std::string>& part_etags,
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class POSIXMultipartWriter : public StoreWriter {
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
del_op->params.high_precision_time = true;
del_op->params.zones_trace = &zones_trace;
- ret = del_op->delete_obj(dpp, null_yield);
+ ret = del_op->delete_obj(dpp, null_yield, true);
if (ret < 0) {
ldpp_dout(dpp, 20) << __func__ << "(): delete_obj() obj=" << obj << " returned ret=" << ret << dendl;
}
}
result.delete_marker = dirent.is_delete_marker();
r = store->unlink_obj_instance(dpp, target->get_ctx(), target->get_bucket_info(), obj, params.olh_epoch,
- y, params.zones_trace, log_op);
+ y, params.zones_trace, add_log);
if (r < 0) {
return r;
}
if (!uploads.empty()) {
for (const auto& upload : uploads) {
- ret = upload->abort(dpp, cct, y);
+ ret = upload->abort(dpp, cct, y, true);
if (ret < 0) {
// we're doing a best-effort; if something cannot be found,
// log it and keep moving forward
public:
RadosDeleteOp(RadosObject* _source);
- virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op = true) override;
+ virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op) override;
};
RadosObject(RadosStore *_st, const rgw_obj_key& _k)
uint64_t olh_epoch,
const DoutPrefixProvider* dpp,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
virtual int transition_to_cloud(Bucket* bucket,
rgw::sal::PlacementTier* tier,
rgw_bucket_dir_entry& o,
int num_parts, int marker,
int* next_marker, bool* truncated, optional_yield y,
bool assume_unsorted = false) override;
- virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op = true) override;
+ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op) override;
virtual int complete(const DoutPrefixProvider* dpp,
optional_yield y, CephContext* cct,
std::map<int, std::string>& part_etags,
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class RadosAppendWriter : public StoreWriter {
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class RadosMultipartWriter : public StoreWriter {
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class RadosLuaManager : public StoreLuaManager {
op_ret = processor->complete(state->obj_size, etag, &mtime, real_time(), attrs,
(delete_at ? *delete_at : real_time()),
if_match, if_nomatch, nullptr, nullptr, nullptr,
- rctx);
+ rctx, true);
if (op_ret != 0) {
/* revert attr updates */
rgw_fh->set_mtime(omtime);
op_ret = processor->complete(s->obj_size, etag, &mtime, real_time(), attrs,
(delete_at ? *delete_at : real_time()), if_match, if_nomatch,
(user_data.empty() ? nullptr : &user_data), nullptr, nullptr,
- rctx);
+ rctx, true);
tracepoint(rgw_op, processor_complete_exit, s->req_id.c_str());
// send request to notification manager
op_ret = processor->complete(s->obj_size, etag, nullptr, real_time(), attrs,
(delete_at ? *delete_at : real_time()),
nullptr, nullptr, nullptr, nullptr, nullptr,
- rctx);
+ rctx, true);
if (op_ret < 0) {
return;
}
del_op->params.olh_epoch = epoch;
del_op->params.marker_version_id = version_id;
- op_ret = del_op->delete_obj(this, y);
+ op_ret = del_op->delete_obj(this, y, true);
if (op_ret >= 0) {
delete_marker = del_op->result.delete_marker;
version_id = del_op->result.version_id;
}
multipart_trace = tracing::rgw::tracer.add_span(name(), trace_ctx);
- op_ret = upload->abort(this, s->cct, y);
+ op_ret = upload->abort(this, s->cct, y, true);
}
int RGWListMultipart::verify_permission(optional_yield y)
del_op->params.bucket_owner = s->bucket_owner;
del_op->params.marker_version_id = version_id;
- op_ret = del_op->delete_obj(this, y);
+ op_ret = del_op->delete_obj(this, y, true);
if (op_ret == -ENOENT) {
op_ret = 0;
}
del_op->params.obj_owner = bowner;
del_op->params.bucket_owner = bucket_owner;
- ret = del_op->delete_obj(dpp, y);
+ ret = del_op->delete_obj(dpp, y, true);
if (ret < 0) {
goto delop_fail;
}
op_ret = processor->complete(size, etag, nullptr, ceph::real_time(),
attrs, ceph::real_time() /* delete_at */,
nullptr, nullptr, nullptr, nullptr, nullptr,
- rctx);
+ rctx, true);
if (op_ret < 0) {
ldpp_dout(this, 20) << "processor::complete returned op_ret=" << op_ret << dendl;
}
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) = 0;
+ bool log_op) = 0;
};
/** A list of key-value attributes */
virtual ~DeleteOp() = default;
/** Delete the object */
- virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op = true) = 0;
+ virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op) = 0;
};
Object() {}
uint64_t olh_epoch,
const DoutPrefixProvider* dpp,
optional_yield y,
- bool log_op = true) = 0;
+ bool log_op) = 0;
/** Move an object to the cloud */
virtual int transition_to_cloud(Bucket* bucket,
rgw::sal::PlacementTier* tier,
int* next_marker, bool* truncated, optional_yield y,
bool assume_unsorted = false) = 0;
/** Abort this upload */
- virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op = true) = 0;
+ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op) = 0;
/** Complete this upload, making it available as a normal object */
virtual int complete(const DoutPrefixProvider* dpp,
optional_yield y, CephContext* cct,
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) = 0;
+ bool log_op) = 0;
};
int num_parts, int marker,
int* next_marker, bool* truncated, optional_yield y,
bool assume_unsorted = false) override;
- virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op = true) override;
+ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op) override;
virtual int complete(const DoutPrefixProvider* dpp,
optional_yield y, CephContext* cct,
std::map<int, std::string>& part_etags,
public:
DBDeleteOp(DBObject* _source);
- virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op = true) override;
+ virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op) override;
};
DBObject() = default;
uint64_t olh_epoch,
const DoutPrefixProvider* dpp,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
virtual bool placement_rules_match(rgw_placement_rule& r1, rgw_placement_rule& r2) override;
virtual int dump_obj_layout(const DoutPrefixProvider *dpp, optional_yield y, Formatter* f) override;
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class DBMultipartWriter : public StoreWriter {
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class DBStore : public StoreDriver {
int FilterMultipartUpload::abort(const DoutPrefixProvider *dpp, CephContext *cct, optional_yield y, bool log_op)
{
- return next->abort(dpp, cct, y);
+ return next->abort(dpp, cct, y, log_op);
}
int FilterMultipartUpload::complete(const DoutPrefixProvider *dpp,
FilterDeleteOp(std::unique_ptr<DeleteOp> _next) : next(std::move(_next)) {}
virtual ~FilterDeleteOp() = default;
- virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op = true) override;
+ virtual int delete_obj(const DoutPrefixProvider* dpp, optional_yield y, bool log_op) override;
};
FilterObject(std::unique_ptr<Object> _next) : next(std::move(_next)) {}
uint64_t olh_epoch,
const DoutPrefixProvider* dpp,
optional_yield y,
- bool log_op = true) override;
+ bool log_op) override;
virtual int transition_to_cloud(Bucket* bucket,
rgw::sal::PlacementTier* tier,
rgw_bucket_dir_entry& o,
int num_parts, int marker,
int* next_marker, bool* truncated, optional_yield y,
bool assume_unsorted = false) override;
- virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op = true) override;
+ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y, bool log_op) override;
virtual int complete(const DoutPrefixProvider* dpp,
optional_yield y, CephContext* cct,
std::map<int, std::string>& part_etags,
const std::string *user_data,
rgw_zone_set *zones_trace, bool *canceled,
const req_context& rctx,
- bool log_op = true) override;
+ bool log_op) override;
};
class FilterLuaManager : public LuaManager {
&if_match, &if_nomatch,
&user_data,
&zones_trace, &canceled,
- rctx);
+ rctx, true);
return ret;
}
&if_match, &if_nomatch,
&user_data,
&zones_trace, &canceled,
- rctx), 0);
+ rctx, true), 0);
unique_ptr<rgw::sal::Object> testObject_copy = testBucket->get_object(rgw_obj_key("test_object_copy"));
&if_match, &if_nomatch,
&user_data,
&zones_trace, &canceled,
- rctx), 0);
+ rctx, true), 0);
unique_ptr<rgw::sal::Object> testObject_copy = testBucket->get_object(rgw_obj_key("test_object_copy"));
unique_ptr<rgw::sal::Object::DeleteOp> testDOp = testObject_DelObject->get_delete_op();
EXPECT_NE(testDOp, nullptr);
- EXPECT_EQ(testDOp->delete_obj(dpp, null_yield), 0);
+ EXPECT_EQ(testDOp->delete_obj(dpp, null_yield, true), 0);
/* Check the object does not exist after delete op */
client.exists(keys, [](cpp_redis::reply& reply) {
&if_match, &if_nomatch,
&user_data,
&zones_trace, &canceled,
- rctx), 0);
+ rctx, true), 0);
client.hget("rgw-object:test_object_DataCheck:cache", "data", [&data](cpp_redis::reply& reply) {
if (reply.is_string()) {
&if_match, &if_nomatch,
&user_data,
&zones_trace, &canceled,
- rctx), 0);
+ rctx, true), 0);
client.hget("rgw-object:test_object_DataCheck:cache", "data", [&dataNew](cpp_redis::reply& reply) {
if (reply.is_string()) {