From: Artem Vasilev Date: Tue, 19 Nov 2024 13:14:54 +0000 (+0300) Subject: rgw/abortmp: Added lock for AbortMultipartUpload X-Git-Tag: testing/wip-khiremat-testing-20250422.120708-squid-debug~75^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=adb3aa7cdadf7fa07e6cce89df181f7cd7ca82ac;p=ceph-ci.git rgw/abortmp: Added lock for AbortMultipartUpload Signed-off-by: Artem Vasilev (cherry picked from commit bae9ed83edffce42456fa9bd1ee4fb5337dd853b) --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 414e1196691..1d155f3557a 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -6546,17 +6546,27 @@ void RGWAbortMultipart::execute(optional_yield y) return; upload = s->bucket->get_multipart_upload(s->object->get_name(), upload_id); + meta_obj = upload->get_meta_obj(); + meta_obj->set_in_extra_data(true); + meta_obj->get_obj_attrs(s->yield, this); + jspan_context trace_ctx(false, false); if (tracing::rgw::tracer.is_enabled()) { // read meta object attributes for trace info - meta_obj = upload->get_meta_obj(); - meta_obj->set_in_extra_data(true); - meta_obj->get_obj_attrs(s->yield, this); extract_span_context(meta_obj->get_attrs(), trace_ctx); } multipart_trace = tracing::rgw::tracer.add_span(name(), trace_ctx); + int max_lock_secs_mp = + s->cct->_conf.get_val("rgw_mp_lock_max_time"); + utime_t dur(max_lock_secs_mp, 0); + auto serializer = meta_obj->get_serializer(this, "RGWCompleteMultipart"); + op_ret = serializer->try_lock(this, dur, y); + if (op_ret < 0) { + return; + } op_ret = upload->abort(this, s->cct, y); + serializer->unlock(); } int RGWListMultipart::verify_permission(optional_yield y)