This is an automated email from the ASF dual-hosted git repository. penghui pushed a commit to branch branch-2.9 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 3e076bbf8804ab1a92386c22d03b0d6e31aa65ba Author: Ruguo Yu <[email protected]> AuthorDate: Wed Dec 15 15:54:41 2021 +0800 [Broker] Modify return result of NamespacesBase#internalGetPublishRate (#13237) ### Motivation It should return `null` instead of `RestException` in method `NamespacesBase#internalGetPublishRate`, because `null` means that the `publish-rate` is not configured. It is the same as `internalGetSubscriptionDispatchRate` as below: https://github.com/apache/pulsar/blob/6d9d24d50db5418ddbb845d2c7a2be2b9ac72893/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java#L1303-L1308 (cherry picked from commit 3e55b4f2c40ecd73bb38962cebc4a822bfe5f1ef) --- .../apache/pulsar/broker/admin/impl/NamespacesBase.java | 8 +------- .../org/apache/pulsar/broker/admin/v1/Namespaces.java | 15 ++++++++++----- .../org/apache/pulsar/broker/admin/v2/Namespaces.java | 15 ++++++++++----- .../client/api/AuthorizationProducerConsumerTest.java | 2 ++ 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java index 87c091a..5f1231f 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java @@ -1197,13 +1197,7 @@ public abstract class NamespacesBase extends AdminResource { validateNamespacePolicyOperation(namespaceName, PolicyName.RATE, PolicyOperation.READ); Policies policies = getNamespacePolicies(namespaceName); - PublishRate publishRate = policies.publishMaxMessageRate.get(pulsar().getConfiguration().getClusterName()); - if (publishRate != null) { - return publishRate; - } else { - throw new RestException(Status.NOT_FOUND, - "Publish-rate is not configured for cluster " + pulsar().getConfiguration().getClusterName()); - } + return policies.publishMaxMessageRate.get(pulsar().getConfiguration().getClusterName()); } @SuppressWarnings("deprecation") diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java index 51728d6..afb6174 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java @@ -675,7 +675,8 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{property}/{cluster}/{namespace}/publishRate") @ApiOperation(hidden = true, - value = "Get publish-rate configured for the namespace, -1 represents not configured yet") + value = "Get publish-rate configured for the namespace, null means publish-rate not configured, " + + "-1 means msg-publish-rate or byte-publish-rate not configured in publish-rate yet") @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist")}) public PublishRate getPublishRate(@PathParam("property") String property, @PathParam("cluster") String cluster, @@ -697,7 +698,8 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{property}/{cluster}/{namespace}/dispatchRate") @ApiOperation(hidden = true, - value = "Get dispatch-rate configured for the namespace, -1 represents not configured yet") + value = "Get dispatch-rate configured for the namespace, null means dispatch-rate not configured, " + + "-1 means msg-dispatch-rate or byte-dispatch-rate not configured in dispatch-rate yet") @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist")}) public DispatchRate getDispatchRate(@PathParam("property") String property, @PathParam("cluster") String cluster, @@ -720,8 +722,9 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{property}/{cluster}/{namespace}/subscriptionDispatchRate") - @ApiOperation(value = - "Get Subscription dispatch-rate configured for the namespace, -1 represents not configured yet") + @ApiOperation(value = "Get subscription dispatch-rate configured for the namespace, null means subscription " + + "dispatch-rate not configured, -1 means msg-dispatch-rate or byte-dispatch-rate not configured " + + "in dispatch-rate yet") @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist")}) public DispatchRate getSubscriptionDispatchRate(@PathParam("property") String property, @@ -746,7 +749,9 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{tenant}/{cluster}/{namespace}/replicatorDispatchRate") - @ApiOperation(value = "Get replicator dispatch-rate configured for the namespace, -1 represents not configured yet") + @ApiOperation(value = "Get replicator dispatch-rate configured for the namespace, null means replicator " + + "dispatch-rate not configured, -1 means msg-dispatch-rate or byte-dispatch-rate not configured " + + "in dispatch-rate yet") @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist") }) public DispatchRate getReplicatorDispatchRate(@PathParam("tenant") String tenant, diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java index e1e892c..37b7354 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java @@ -602,7 +602,8 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{property}/{namespace}/publishRate") @ApiOperation(hidden = true, - value = "Get publish-rate configured for the namespace, -1 represents not configured yet") + value = "Get publish-rate configured for the namespace, null means publish-rate not configured, " + + "-1 means msg-publish-rate or byte-publish-rate not configured in publish-rate yet") @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist")}) public PublishRate getPublishRate( @@ -634,7 +635,8 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{tenant}/{namespace}/dispatchRate") - @ApiOperation(value = "Get dispatch-rate configured for the namespace, -1 represents not configured yet") + @ApiOperation(value = "Get dispatch-rate configured for the namespace, null means dispatch-rate not configured, " + + "-1 means msg-dispatch-rate or byte-dispatch-rate not configured in dispatch-rate yet") @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist") }) public DispatchRate getDispatchRate(@PathParam("tenant") String tenant, @@ -657,8 +659,9 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{tenant}/{namespace}/subscriptionDispatchRate") - @ApiOperation( - value = "Get Subscription dispatch-rate configured for the namespace, -1 represents not configured yet") + @ApiOperation(value = "Get subscription dispatch-rate configured for the namespace, null means subscription " + + "dispatch-rate not configured, -1 means msg-dispatch-rate or byte-dispatch-rate not configured " + + "in dispatch-rate yet") @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist")}) public DispatchRate getSubscriptionDispatchRate(@PathParam("tenant") String tenant, @@ -732,7 +735,9 @@ public class Namespaces extends NamespacesBase { @GET @Path("/{tenant}/{namespace}/replicatorDispatchRate") - @ApiOperation(value = "Get replicator dispatch-rate configured for the namespace, -1 represents not configured yet") + @ApiOperation(value = "Get replicator dispatch-rate configured for the namespace, null means replicator " + + "dispatch-rate not configured, -1 means msg-dispatch-rate or byte-dispatch-rate not configured " + + "in dispatch-rate yet") @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist") }) public DispatchRate getReplicatorDispatchRate(@PathParam("tenant") String tenant, diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java index c9d76b0..62aa429 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java @@ -22,6 +22,7 @@ import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.mockito.Mockito.spy; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import com.google.common.collect.Lists; @@ -209,6 +210,7 @@ public class AuthorizationProducerConsumerTest extends ProducerConsumerBase { superAdmin.tenants().createTenant("my-property", new TenantInfoImpl(Sets.newHashSet(tenantRole), Sets.newHashSet("test"))); superAdmin.namespaces().createNamespace(namespace, Sets.newHashSet("test")); + assertNull(superAdmin.namespaces().getPublishRate(namespace)); // subscriptionRole doesn't have topic-level authorization, so it will fail to get topic stats-internal info try {
