This is an automated email from the ASF dual-hosted git repository.

mattisonchao 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 b1a463abec0 [fix][broker] Fix admin api status code compatibility 
(#19782)
b1a463abec0 is described below

commit b1a463abec0330d3788b1620e50c634c529148c0
Author: Qiang Zhao <[email protected]>
AuthorDate: Mon Mar 13 21:03:22 2023 +0800

    [fix][broker] Fix admin api status code compatibility (#19782)
---
 .../pulsar/broker/admin/impl/PersistentTopicsBase.java  |  2 +-
 .../org/apache/pulsar/broker/admin/AdminApi2Test.java   | 17 +++++++++++++++++
 2 files changed, 18 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 633c4747ee0..035e32542ed 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
@@ -420,7 +420,7 @@ public class PersistentTopicsBase extends AdminResource {
             .thenCompose(partitionedTopicMetadata -> {
                 int currentMetadataPartitions = 
partitionedTopicMetadata.partitions;
                 if (currentMetadataPartitions <= 0) {
-                    throw new RestException(422 /* Unprocessable entity*/,
+                    throw new RestException(Status.CONFLICT /* Unprocessable 
entity*/,
                             String.format("Topic %s is not the partitioned 
topic.", topicName));
                 }
                 if (expectPartitions < currentMetadataPartitions) {
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 90be220cfd8..fb4f880efff 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
@@ -211,6 +211,23 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         return new Object[][] { { true }, { false } };
     }
 
+
+    /**
+     * It verifies http error code when updating partitions to ensure 
compatibility.
+     */
+    @Test
+    public void testUpdatePartitionsErrorCode() {
+        final String nonPartitionedTopicName = "non-partitioned-topic-name" + 
UUID.randomUUID();
+        try {
+            // Update a non-partitioned topic
+            admin.topics().updatePartitionedTopic(nonPartitionedTopicName, 2);
+            Assert.fail("Expect conflict exception.");
+        } catch (PulsarAdminException ex) {
+            Assert.assertEquals(ex.getStatusCode(), 409 /*Conflict*/);
+            Assert.assertTrue(ex instanceof 
PulsarAdminException.ConflictException);
+        }
+    }
+
     /**
      * <pre>
      * It verifies increasing partitions for partitioned-topic.

Reply via email to