From: Alex Wojno Date: Fri, 28 Jun 2024 18:32:55 +0000 (-0400) Subject: rgw: correct tag checking logic in bucket_exports_object X-Git-Tag: v20.0.0~1605^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4401be844276f0111eb0fe82af7625cfbbc9b9b3;p=ceph.git rgw: correct tag checking logic in bucket_exports_object Signed-off-by: Alex Wojno --- diff --git a/src/rgw/driver/rados/rgw_bucket_sync.cc b/src/rgw/driver/rados/rgw_bucket_sync.cc index 28e35d4bb47cb..1e7316d4271d6 100644 --- a/src/rgw/driver/rados/rgw_bucket_sync.cc +++ b/src/rgw/driver/rados/rgw_bucket_sync.cc @@ -984,12 +984,11 @@ void RGWBucketSyncPolicyHandler::get_pipes(std::set *_sour } } -bool RGWBucketSyncPolicyHandler::bucket_exports_object(const std::string& obj_name, const RGWObjTags* tags) const { +bool RGWBucketSyncPolicyHandler::bucket_exports_object(const std::string& obj_name, const RGWObjTags& tags) const { if (bucket_exports_data()) { for (auto& entry : target_pipes.pipe_map) { auto& filter = entry.second.params.source.filter; - if (filter.check_prefix(obj_name) && - (tags == nullptr || filter.check_tags(tags->get_tags()))) { + if (filter.check_prefix(obj_name) && filter.check_tags(tags.get_tags())) { return true; } } diff --git a/src/rgw/driver/rados/rgw_bucket_sync.h b/src/rgw/driver/rados/rgw_bucket_sync.h index ba578c8371c06..eb3226b704738 100644 --- a/src/rgw/driver/rados/rgw_bucket_sync.h +++ b/src/rgw/driver/rados/rgw_bucket_sync.h @@ -402,7 +402,7 @@ public: return target_hints; } - bool bucket_exports_object(const std::string& obj_name, const RGWObjTags* tags) const; + bool bucket_exports_object(const std::string& obj_name, const RGWObjTags& tags) const; bool bucket_exports_data() const; bool bucket_imports_data() const; diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index d2b8b1fdf8ad9..b42a9e17463d0 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -4481,7 +4481,7 @@ void RGWPutObj::execute(optional_yield y) ldpp_dout(this, 0) << "failed to read sync policy for bucket: " << s->bucket << dendl; return; } - if (policy_handler && policy_handler->bucket_exports_object(s->object->get_name(), obj_tags.get())) { + if (policy_handler && policy_handler->bucket_exports_object(s->object->get_name(), obj_tags)) { bufferlist repl_bl; repl_bl.append("PENDING"); emplace_attr(RGW_ATTR_OBJ_REPLICATION_STATUS, std::move(repl_bl));