From 4e6baa5e201785362fe1422add305bcce22b66d7 Mon Sep 17 00:00:00 2001 From: fanjianye Date: Wed, 31 Aug 2022 19:54:32 +0800 Subject: [PATCH 1/2] fix update topic partition --- .../pulsar/broker/admin/impl/PersistentTopicsBase.java | 2 +- .../org/apache/pulsar/broker/admin/AdminApi2Test.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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..3d323552e7e77 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 @@ -4457,7 +4457,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") From 324644796ad095cbe08f3822621985ecc8c7c829 Mon Sep 17 00:00:00 2001 From: fanjianye Date: Thu, 1 Sep 2022 10:31:02 +0800 Subject: [PATCH 2/2] remove the useless code of handling ConflictException in previous pr --- .../apache/pulsar/broker/admin/impl/PersistentTopicsBase.java | 4 ---- 1 file changed, 4 deletions(-) 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 3d323552e7e77..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; });