From 9fa6270126faca571f6d7e661e06bf5c51124e48 Mon Sep 17 00:00:00 2001 From: aloyszhang Date: Mon, 6 Jul 2020 12:38:47 +0800 Subject: [PATCH] fix update partitions error for non-persistent topic --- .../java/org/apache/pulsar/broker/admin/AdminResource.java | 3 +-- .../java/org/apache/pulsar/broker/admin/AdminResourceTest.java | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java index 7d4b6d1a793a8..9124ebb890e98 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java @@ -357,10 +357,9 @@ protected void validatePartitionedTopicName(String tenant, String namespace, Str } protected void validatePartitionedTopicMetadata(String tenant, String namespace, String encodedTopic) { - String completeTopicName = tenant + "/" + namespace + "/" + Codec.decode(encodedTopic); try { PartitionedTopicMetadata partitionedTopicMetadata = - pulsar().getBrokerService().fetchPartitionedTopicMetadataAsync(TopicName.get(completeTopicName)).get(); + pulsar().getBrokerService().fetchPartitionedTopicMetadataAsync(topicName).get(); if (partitionedTopicMetadata.partitions < 1) { throw new RestException(Status.CONFLICT, "Topic is not partitioned topic"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminResourceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminResourceTest.java index 757b77504e978..509374da86f82 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminResourceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminResourceTest.java @@ -98,8 +98,10 @@ public void testValidatePartitionedTopicMetadata() throws Exception { AdminResource resource = mockResource(); resource.setPulsar(pulsar); // validate should pass when topic is partitioned topic + resource.validatePartitionedTopicName(tenant, namespace, Codec.encode(partitionedTopic)); resource.validatePartitionedTopicMetadata(tenant, namespace, Codec.encode(partitionedTopic)); // validate should failed when topic is non-partitioned topic + resource.validatePartitionedTopicName(tenant, namespace, Codec.encode(nonPartitionedTopic)); try { resource.validatePartitionedTopicMetadata(tenant, namespace, Codec.encode(nonPartitionedTopic)); fail("Should fail validation on non-partitioned topic");