@@ -1098,21 +1098,23 @@ int RGWPubSub::remove_topic_v2(const DoutPrefixProvider* dpp,
10981098 << dendl;
10991099 return 0 ;
11001100 }
1101- ret = driver->remove_topic_v2 (name, tenant, objv_tracker, y, dpp);
1102- if (ret < 0 ) {
1103- ldpp_dout (dpp, 1 ) << " ERROR: failed to remove topic info: ret=" << ret
1104- << dendl;
1105- return ret;
1106- }
11071101
11081102 const rgw_pubsub_dest& dest = topic.dest ;
11091103 if (!dest.push_endpoint .empty () && dest.persistent &&
11101104 !dest.persistent_queue .empty ()) {
11111105 ret = driver->remove_persistent_topic (dpp, y, dest.persistent_queue );
11121106 if (ret < 0 && ret != -ENOENT) {
1113- ldpp_dout (dpp, 1 ) << " WARNING : failed to remove queue for "
1107+ ldpp_dout (dpp, 1 ) << " ERROR : failed to remove queue for "
11141108 " persistent topic: " << cpp_strerror (ret) << dendl;
1115- } // not fatal
1109+ return ret;
1110+ }
1111+ }
1112+
1113+ ret = driver->remove_topic_v2 (name, tenant, objv_tracker, y, dpp);
1114+ if (ret < 0 ) {
1115+ ldpp_dout (dpp, 1 ) << " ERROR: failed to remove topic info: ret=" << ret
1116+ << dendl;
1117+ return ret;
11161118 }
11171119 return 0 ;
11181120}
@@ -1144,22 +1146,21 @@ int RGWPubSub::remove_topic(const DoutPrefixProvider *dpp, const std::string& na
11441146 if (t == topics.topics .end ()) {
11451147 return -ENOENT;
11461148 }
1147- const rgw_pubsub_dest dest = std::move (t->second .dest );
1149+ if (!t->second .dest .push_endpoint .empty () && t->second .dest .persistent &&
1150+ !t->second .dest .persistent_queue .empty ()) {
1151+ ret = driver->remove_persistent_topic (dpp, y, t->second .dest .persistent_queue );
1152+ if (ret < 0 && ret != -ENOENT) {
1153+ ldpp_dout (dpp, 1 ) << " ERROR: failed to remove queue for "
1154+ " persistent topic: " << cpp_strerror (ret) << dendl;
1155+ return ret;
1156+ }
1157+ }
11481158 topics.topics .erase (t);
11491159
11501160 ret = write_topics_v1 (dpp, topics, &objv_tracker, y);
11511161 if (ret < 0 ) {
11521162 ldpp_dout (dpp, 1 ) << " ERROR: failed to remove topics info: ret=" << ret << dendl;
11531163 return ret;
11541164 }
1155-
1156- if (!dest.push_endpoint .empty () && dest.persistent &&
1157- !dest.persistent_queue .empty ()) {
1158- ret = driver->remove_persistent_topic (dpp, y, dest.persistent_queue );
1159- if (ret < 0 && ret != -ENOENT) {
1160- ldpp_dout (dpp, 1 ) << " WARNING: failed to remove queue for "
1161- " persistent topic: " << cpp_strerror (ret) << dendl;
1162- } // not fatal
1163- }
11641165 return 0 ;
11651166}
0 commit comments