This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new a3bca685a4e [improve][admin] Remove duplicate topics name when
`deleteNamespace` (#20683)
a3bca685a4e is described below
commit a3bca685a4ef0916462228e035f77fdbf295653d
Author: Jiwei Guo <[email protected]>
AuthorDate: Tue Jul 4 16:18:41 2023 +0800
[improve][admin] Remove duplicate topics name when `deleteNamespace`
(#20683)
---
.../pulsar/broker/admin/impl/NamespacesBase.java | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
index ff87f52b64a..789a8e6dbdc 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
@@ -233,14 +233,14 @@ public abstract class NamespacesBase extends
AdminResource {
}))
.thenCompose(topics -> {
List<String> allTopics = topics.get(0);
- ArrayList<String> allUserCreatedTopics = new
ArrayList<>();
+ Set<String> allUserCreatedTopics = new
HashSet<>();
List<String> allPartitionedTopics =
topics.get(1);
- ArrayList<String>
allUserCreatedPartitionTopics = new ArrayList<>();
+ Set<String> allUserCreatedPartitionTopics =
new HashSet<>();
boolean hasNonSystemTopic = false;
- List<String> allSystemTopics = new
ArrayList<>();
- List<String> allPartitionedSystemTopics = new
ArrayList<>();
- List<String> topicPolicy = new ArrayList<>();
- List<String> partitionedTopicPolicy = new
ArrayList<>();
+ Set<String> allSystemTopics = new HashSet<>();
+ Set<String> allPartitionedSystemTopics = new
HashSet<>();
+ Set<String> topicPolicy = new HashSet<>();
+ Set<String> partitionedTopicPolicy = new
HashSet<>();
for (String topic : allTopics) {
if
(!pulsar().getBrokerService().isSystemTopic(TopicName.get(topic))) {
hasNonSystemTopic = true;
@@ -279,6 +279,12 @@ public abstract class NamespacesBase extends AdminResource
{
return old;
});
}
+ allUserCreatedTopics.removeIf(t ->
+
allPartitionedTopics.contains(TopicName.get(t).getPartitionedTopicName()));
+ allSystemTopics.removeIf(t ->
+
allPartitionedTopics.contains(TopicName.get(t).getPartitionedTopicName()));
+ topicPolicy.removeIf(t ->
+
allPartitionedTopics.contains(TopicName.get(t).getPartitionedTopicName()));
return markDeleteFuture.thenCompose(__ ->
internalDeleteTopicsAsync(allUserCreatedTopics))
.thenCompose(ignore ->
@@ -348,7 +354,7 @@ public abstract class NamespacesBase extends AdminResource {
return topic.endsWith(SystemTopicNames.PENDING_ACK_STORE_SUFFIX);
}
- private CompletableFuture<Void>
internalDeletePartitionedTopicsAsync(List<String> topicNames) {
+ private CompletableFuture<Void>
internalDeletePartitionedTopicsAsync(Set<String> topicNames) {
if (CollectionUtils.isEmpty(topicNames)) {
return CompletableFuture.completedFuture(null);
}
@@ -362,7 +368,7 @@ public abstract class NamespacesBase extends AdminResource {
return FutureUtil.waitForAll(futures);
}
- private CompletableFuture<Void> internalDeleteTopicsAsync(List<String>
topicNames) {
+ private CompletableFuture<Void> internalDeleteTopicsAsync(Set<String>
topicNames) {
if (CollectionUtils.isEmpty(topicNames)) {
return CompletableFuture.completedFuture(null);
}