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 72249fdc1e089..de5c9baf678a4 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 @@ -4396,10 +4396,6 @@ private CompletableFuture updatePartitionedTopic(TopicName topicName, int }); return future; }).thenAccept(__ -> result.complete(null)).exceptionally(ex -> { - if (force && ex.getCause() instanceof PulsarAdminException.ConflictException) { - result.complete(null); - return null; - } result.completeExceptionally(ex); return null; }); @@ -4457,7 +4453,7 @@ private CompletableFuture createSubscriptions(TopicName topicName, int num future.complete(null); } else { if (ignoreConflictException - && ex.getCause() instanceof PulsarAdminException.ConflictException) { + && ex instanceof PulsarAdminException.ConflictException) { future.complete(null); } else { future.completeExceptionally(ex); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java index d492ad73d7860..7a177b2c03ff3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java @@ -2585,9 +2585,17 @@ public void testFailedUpdatePartitionedTopic() throws Exception { } catch (PulsarAdminException.PreconditionFailedException e) { // Ok } + assertEquals(admin.topics().getPartitionedTopicMetadata(partitionedTopicName).partitions, startPartitions); + admin.topics().updatePartitionedTopic(partitionedTopicName, newPartitions, false, true); // validate subscription is created for new partition. - assertNotNull(admin.topics().getStats(partitionedTopicName + "-partition-" + 6).getSubscriptions().get(subName1)); + for (int i = startPartitions; i < newPartitions; i++) { + assertNotNull( + admin.topics().getStats(partitionedTopicName + "-partition-" + i).getSubscriptions().get(subName1)); + } + + // validate update partition is success + assertEquals(admin.topics().getPartitionedTopicMetadata(partitionedTopicName).partitions, newPartitions); } @Test(dataProvider = "topicType")