From: Yuval Lifshitz Date: Mon, 12 May 2025 18:05:30 +0000 (+0000) Subject: rgw/logging: add size in MPU complete in standard mode X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=43bf2b33e69a693ac849d6baffbaddc642440a84;p=ceph.git rgw/logging: add size in MPU complete in standard mode Fixes: https://tracker.ceph.com/issues/71288 Signed-off-by: Yuval Lifshitz (cherry picked from commit ccb6635922f260a779a9779d7def8335058e5431) --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 232aca1f4662d..e6fc5b3258605 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -7184,6 +7184,12 @@ void RGWCompleteMultipart::execute(optional_yield y) return; } + // size is logged in stadared mode + int ret = rgw::bucketlogging::log_record(driver, rgw::bucketlogging::LoggingType::Standard, s->object.get(), s, canonical_name(), "", ofs, this, y, true, false); + if (ret < 0) { + ldpp_dout(this, 5) << "WARNING: in Standard mode, complete MPU operation ignores bucket logging failure: " << ret << dendl; + } + remove_objs.clear(); // use cls_version_check() when deleting the meta object to detect part uploads that raced @@ -7229,7 +7235,7 @@ void RGWCompleteMultipart::execute(optional_yield y) etag = s->object->get_attrs()[RGW_ATTR_ETAG].to_str(); // send request to notification manager - int ret = res->publish_commit(this, ofs, upload_time, etag, s->object->get_instance()); + ret = res->publish_commit(this, ofs, upload_time, etag, s->object->get_instance()); if (ret < 0) { ldpp_dout(this, 1) << "ERROR: publishing notification failed, with error: " << ret << dendl; // too late to rollback operation, hence op_ret is not set here diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index c8a5a4a960094..ffddbe4c4e739 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -1972,6 +1972,7 @@ public: const char* name() const override { return "complete_multipart"; } RGWOpType get_type() override { return RGW_OP_COMPLETE_MULTIPART; } uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; } + bool always_do_bucket_logging() const override { return false; } }; class RGWAbortMultipart : public RGWOp { diff --git a/src/rgw/rgw_process.cc b/src/rgw/rgw_process.cc index 704a6a7c2eea4..c0c34cebb66d2 100644 --- a/src/rgw/rgw_process.cc +++ b/src/rgw/rgw_process.cc @@ -467,15 +467,15 @@ done: } if (op && op->always_do_bucket_logging()) { - std::ignore = rgw::bucketlogging::log_record(driver, + std::ignore = rgw::bucketlogging::log_record(driver, rgw::bucketlogging::LoggingType::Standard, s->object.get(), - s, - op->canonical_name(), - "", + s, + op->canonical_name(), + "", (s->src_object ? s->src_object->get_size() : (s->object ? s->object->get_size() : 0)), - op, - yield, + op, + yield, true, false); }