// called by rgw_bucket_complete_op() for each item in op.remove_objs
static int complete_remove_obj(cls_method_context_t hctx,
rgw_bucket_dir_header& header,
- const cls_rgw_obj_key& key, bool log_op)
+ const cls_rgw_obj_key& key)
{
rgw_bucket_dir_entry entry;
string idx;
int(entry.meta.category));
unaccount_entry(header, entry);
- if (log_op) {
- ++header.ver; // increment index version, or we'll overwrite keys previously written
- const std::string tag;
- ret = log_index_operation(hctx, key, CLS_RGW_OP_DEL, tag, entry.meta.mtime,
- entry.ver, CLS_RGW_STATE_COMPLETE, header.ver,
- header.max_marker, 0, nullptr, nullptr, nullptr);
- if (ret < 0) {
- return ret;
- }
- }
-
ret = cls_cxx_map_remove_key(hctx, idx);
if (ret < 0) {
CLS_LOG(1, "%s: cls_cxx_map_remove_key failed with %d", __func__, ret);
CLS_LOG_BITX(bitx_inst, 20,
"INFO: %s: completing object remove key=%s",
__func__, escape_str(remove_key.to_string()).c_str());
- rc = complete_remove_obj(hctx, header, remove_key, default_log_op);
+ rc = complete_remove_obj(hctx, header, remove_key);
if (rc < 0) {
CLS_LOG_BITX(bitx_inst, 1,
"WARNING: %s: complete_remove_obj, failed to remove entry, "
emplace_attr(RGW_ATTR_OBJECT_RETENTION, std::move(obj_retention_bl));
}
+ // don't track the individual parts of multipart uploads. they replicate in
+ // full after CompleteMultipart
+ const uint32_t complete_flags = multipart ? 0 : rgw::sal::FLAG_LOG_OP;
+
tracepoint(rgw_op, processor_complete_enter, s->req_id.c_str());
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,
- s->yield, rgw::sal::FLAG_LOG_OP);
+ s->yield, complete_flags);
tracepoint(rgw_op, processor_complete_exit, s->req_id.c_str());
/* produce torrent */
// when the bucket is, as that would add an unneeded delete marker
// moved to complete to prevent segmentation fault in publish commit
if (meta_obj.get() != nullptr) {
- int ret = meta_obj->delete_object(this, null_yield, rgw::sal::FLAG_PREVENT_VERSIONING | rgw::sal::FLAG_LOG_OP);
+ int ret = meta_obj->delete_object(this, null_yield, rgw::sal::FLAG_PREVENT_VERSIONING);
if (ret >= 0) {
/* serializer's exclusive lock is released */
serializer->clear_locked();