]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/pubsub: use Driver::add/remove_persistent_topic()
authorCasey Bodley <cbodley@redhat.com>
Thu, 2 May 2024 18:46:47 +0000 (14:46 -0400)
committerCasey Bodley <cbodley@redhat.com>
Mon, 13 May 2024 15:53:43 +0000 (11:53 -0400)
Fixes: https://tracker.ceph.com/issues/65668
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/driver/rados/topic.cc
src/rgw/rgw_pubsub.cc
src/rgw/rgw_rest_pubsub.cc

index 7769649fbbfe767907fdfd9cb616b6eba6cf1c04..9dda05a9f35b6f58d67f9bebd2dc49a727f1aac3 100644 (file)
@@ -354,7 +354,11 @@ class MetadataHandler : public RGWMetadataHandler {
     }
     if (!info.dest.push_endpoint.empty() && info.dest.persistent &&
         !info.dest.persistent_queue.empty()) {
-      r = rgw::notify::add_persistent_topic(info.dest.persistent_queue, y);
+      librados::IoCtx ioctx;
+      r = rgw_init_ioctx(dpp, &rados, zone.notif_pool, ioctx, true, false);
+      if (r >= 0) {
+        r = rgw::notify::add_persistent_topic(dpp, ioctx, info.dest.persistent_queue, y);
+      }
       if (r < 0) {
         ldpp_dout(dpp, 1) << "ERROR: failed to create queue for persistent topic "
             << info.dest.persistent_queue << " with: " << cpp_strerror(r) << dendl;
@@ -388,7 +392,11 @@ class MetadataHandler : public RGWMetadataHandler {
     if (!dest.push_endpoint.empty() && dest.persistent &&
         !dest.persistent_queue.empty()) {
       // delete persistent topic queue
-      r = rgw::notify::remove_persistent_topic(dest.persistent_queue, y);
+      librados::IoCtx ioctx;
+      r = rgw_init_ioctx(dpp, &rados, zone.notif_pool, ioctx, true, false);
+      if (r >= 0) {
+        r = rgw::notify::remove_persistent_topic(dpp, ioctx, dest.persistent_queue, y);
+      }
       if (r < 0 && r != -ENOENT) {
         ldpp_dout(dpp, 1) << "Failed to delete queue for persistent topic: "
                           << name << " with error: " << r << dendl;
index 160ecee1768876360e6f9312696fe069a7884190..08118f57b364638c41d574cbf430b62c19b79e3f 100644 (file)
@@ -1091,7 +1091,7 @@ int RGWPubSub::remove_topic_v2(const DoutPrefixProvider* dpp,
   const rgw_pubsub_dest& dest = topic.dest;
   if (!dest.push_endpoint.empty() && dest.persistent &&
       !dest.persistent_queue.empty()) {
-    ret = rgw::notify::remove_persistent_topic(dest.persistent_queue, y);
+    ret = driver->remove_persistent_topic(dpp, y, dest.persistent_queue);
     if (ret < 0 && ret != -ENOENT) {
       ldpp_dout(dpp, 1) << "WARNING: failed to remove queue for "
           "persistent topic: " << cpp_strerror(ret) << dendl;
@@ -1138,7 +1138,7 @@ int RGWPubSub::remove_topic(const DoutPrefixProvider *dpp, const std::string& na
 
   if (!dest.push_endpoint.empty() && dest.persistent &&
       !dest.persistent_queue.empty()) {
-    ret = rgw::notify::remove_persistent_topic(dest.persistent_queue, y);
+    ret = driver->remove_persistent_topic(dpp, y, dest.persistent_queue);
     if (ret < 0 && ret != -ENOENT) {
       ldpp_dout(dpp, 1) << "WARNING: failed to remove queue for "
           "persistent topic: " << cpp_strerror(ret) << dendl;
index 1913a0ac576b3de08d6b1c8908fdf1b9e0e51eb7..f3437269473eb3789d25bdf9d484592a8f52609b 100644 (file)
@@ -415,7 +415,7 @@ void RGWPSCreateTopicOp::execute(optional_yield y) {
     dest.persistent_queue = string_cat_reserve(
         get_account_or_tenant(s->owner.id), ":", topic_name);
 
-    op_ret = rgw::notify::add_persistent_topic(dest.persistent_queue, s->yield);
+    op_ret = driver->add_persistent_topic(this, y, dest.persistent_queue);
     if (op_ret < 0) {
       ldpp_dout(this, 1) << "CreateTopic Action failed to create queue for "
                             "persistent topics. error:"
@@ -874,7 +874,7 @@ void RGWPSSetTopicAttributesOp::execute(optional_yield y) {
     dest.persistent_queue = string_cat_reserve(
         get_account_or_tenant(s->owner.id), ":", topic_name);
 
-    op_ret = rgw::notify::add_persistent_topic(dest.persistent_queue, s->yield);
+    op_ret = driver->add_persistent_topic(this, y, dest.persistent_queue);
     if (op_ret < 0) {
       ldpp_dout(this, 4)
           << "SetTopicAttributes Action failed to create queue for "
@@ -884,7 +884,7 @@ void RGWPSSetTopicAttributesOp::execute(optional_yield y) {
     }
   } else if (already_persistent) {
     // changing the persistent topic to non-persistent.
-    op_ret = rgw::notify::remove_persistent_topic(result.dest.persistent_queue, s->yield);
+    op_ret = driver->remove_persistent_topic(this, y, result.dest.persistent_queue);
     if (op_ret != -ENOENT && op_ret < 0) {
       ldpp_dout(this, 4) << "SetTopicAttributes Action failed to remove queue "
                             "for persistent topics. error:"