未验证 提交 d1070b7f 编写于 作者: M Matteo Merli 提交者: GitHub

Ensure deleting a partitioned-topic on a non existing namespace returns 404 (#7777)

上级 3e13b9b3
......@@ -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);
......
......@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册