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.