From 4401be844276f0111eb0fe82af7625cfbbc9b9b3 Mon Sep 17 00:00:00 2001 From: Alex Wojno Date: Fri, 28 Jun 2024 14:32:55 -0400 Subject: [PATCH] rgw: correct tag checking logic in bucket_exports_object Signed-off-by: Alex Wojno --- src/rgw/driver/rados/rgw_bucket_sync.cc | 5 ++--- src/rgw/driver/rados/rgw_bucket_sync.h | 2 +- src/rgw/rgw_op.cc | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/rgw/driver/rados/rgw_bucket_sync.cc b/src/rgw/driver/rados/rgw_bucket_sync.cc index 28e35d4bb47..1e7316d4271 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 ba578c8371c..eb3226b7047 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 d2b8b1fdf8a..b42a9e17463 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)); -- 2.39.5