This is an automated email from the ASF dual-hosted git repository.
mmerli 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 d1070b7 Ensure deleting a partitioned-topic on a non existing
namespace returns 404 (#7777)
d1070b7 is described below
commit d1070b7fb696ba62f05a11dae1195790e898723a
Author: Matteo Merli <[email protected]>
AuthorDate: Thu Aug 6 17:25:29 2020 -0700
Ensure deleting a partitioned-topic on a non existing namespace returns 404
(#7777)
---
.../broker/admin/impl/PersistentTopicsBase.java | 2 +-
.../apache/pulsar/broker/admin/NamespacesTest.java | 58 ++++++++++++++++++++++
2 files changed, 59 insertions(+), 1 deletion(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
index 866180f..835a5fe 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
@@ -613,7 +613,7 @@ public class PersistentTopicsBase extends AdminResource {
return;
}
final CompletableFuture<Void> future = new CompletableFuture<>();
- getPartitionedTopicMetadataAsync(topicName, authoritative,
false).thenAccept(partitionMeta -> {
+
pulsar().getBrokerService().fetchPartitionedTopicMetadataAsync(topicName).thenAccept(partitionMeta
-> {
final int numPartitions = partitionMeta.partitions;
if (numPartitions > 0) {
final AtomicInteger count = new AtomicInteger(numPartitions);
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
index 21235b6..5158352 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
@@ -69,6 +69,7 @@ import org.apache.pulsar.broker.namespace.OwnershipCache;
import org.apache.pulsar.broker.web.PulsarWebResource;
import org.apache.pulsar.broker.web.RestException;
import org.apache.pulsar.client.admin.PulsarAdminException;
+import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException;
import org.apache.pulsar.client.api.Consumer;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.SubscriptionType;
@@ -1298,4 +1299,61 @@ public class NamespacesTest extends
MockedPulsarServiceBaseTest {
doReturn(true).when(nsSvc)
.isServiceUnitOwned(Mockito.argThat(bundle ->
bundle.getNamespaceObject().equals(namespace)));
}
+
+ @Test
+ public void testDeleteNonPartitionedTopicMultipleTimes() throws Exception {
+ String namespace = this.testTenant + "/namespace-" + System.nanoTime();
+ String topic = namespace + "/topic";
+
+ admin.namespaces().createNamespace(namespace,
Sets.newHashSet(testLocalCluster));
+
+ admin.topics().createNonPartitionedTopic(topic);
+
+ admin.topics().delete(topic);
+
+ try {
+ admin.topics().delete(topic);
+ fail("should have failed");
+ } catch (NotFoundException e) {
+ // Expected
+ }
+
+ admin.namespaces().deleteNamespace(namespace);
+
+ try {
+ admin.topics().delete(topic);
+ fail("should have failed");
+ } catch (NotFoundException e) {
+ // Expected
+ }
+ }
+
+ @Test
+ public void testDeletePartitionedTopicMultipleTimes() throws Exception {
+ String namespace = this.testTenant + "/namespace-" + System.nanoTime();
+ String topic = namespace + "/topic";
+
+ admin.namespaces().createNamespace(namespace,
Sets.newHashSet(testLocalCluster));
+
+ admin.topics().createPartitionedTopic(topic, 3);
+
assertEquals(admin.topics().getPartitionedTopicMetadata(topic).partitions, 3);
+
+ admin.topics().deletePartitionedTopic(topic);
+
+ try {
+ admin.topics().deletePartitionedTopic(topic);
+ fail("should have failed");
+ } catch (NotFoundException e) {
+ // Expected
+ }
+
+ admin.namespaces().deleteNamespace(namespace);
+
+ try {
+ admin.topics().deletePartitionedTopic(topic);
+ fail("should have failed");
+ } catch (NotFoundException e) {
+ // Expected
+ }
+ }
}
\ No newline at end of file