You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by te...@apache.org on 2022/07/13 11:55:56 UTC
[pulsar] branch master updated: [improve][broker][PIP-149]make getBacklogQuotaMap method async in Namespaces (#16504)
This is an automated email from the ASF dual-hosted git repository.
technoboy 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 a03800a4d2b [improve][broker][PIP-149]make getBacklogQuotaMap method async in Namespaces (#16504)
a03800a4d2b is described below
commit a03800a4d2bc25f95d704f61aba597b0610fd977
Author: Qiang Huang <HQ...@users.noreply.github.com>
AuthorDate: Wed Jul 13 19:55:48 2022 +0800
[improve][broker][PIP-149]make getBacklogQuotaMap method async in Namespaces (#16504)
---
.../org/apache/pulsar/broker/admin/v1/Namespaces.java | 19 ++++++++++++-------
.../org/apache/pulsar/broker/admin/v2/Namespaces.java | 17 ++++++++++++-----
2 files changed, 24 insertions(+), 12 deletions(-)
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 9d09086c9b2..4264e5669d0 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
@@ -26,7 +26,6 @@ import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import javax.ws.rs.Consumes;
@@ -1076,14 +1075,20 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(hidden = true, value = "Get backlog quota map on a namespace.")
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
- public Map<BacklogQuotaType, BacklogQuota> getBacklogQuotaMap(@PathParam("property") String property,
+ public void getBacklogQuotaMap(
+ @Suspended final AsyncResponse asyncResponse,
+ @PathParam("property") String property,
@PathParam("cluster") String cluster, @PathParam("namespace") String namespace) {
validateNamespaceName(property, cluster, namespace);
- validateNamespacePolicyOperation(NamespaceName.get(property, namespace),
- PolicyName.BACKLOG, PolicyOperation.READ);
-
- Policies policies = getNamespacePolicies(namespaceName);
- return policies.backlog_quota_map;
+ validateNamespacePolicyOperationAsync(namespaceName, PolicyName.BACKLOG,
+ PolicyOperation.READ)
+ .thenCompose(__ -> getNamespacePoliciesAsync(namespaceName))
+ .thenAccept(policies -> asyncResponse.resume(policies.backlog_quota_map))
+ .exceptionally(ex -> {
+ log.error("[{}] Failed to get backlog quota map on namespace {}", clientAppId(), namespaceName, ex);
+ resumeAsyncResponseExceptionally(asyncResponse, ex);
+ return null;
+ });
}
@POST
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 91921489d50..6036b0a6dec 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
@@ -1121,13 +1121,20 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(value = "Get backlog quota map on a namespace.")
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
- public Map<BacklogQuotaType, BacklogQuota> getBacklogQuotaMap(@PathParam("tenant") String tenant,
+ public void getBacklogQuotaMap(
+ @Suspended final AsyncResponse asyncResponse,
+ @PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
validateNamespaceName(tenant, namespace);
- validateNamespacePolicyOperation(
- NamespaceName.get(tenant, namespace), PolicyName.BACKLOG, PolicyOperation.READ);
- Policies policies = getNamespacePolicies(namespaceName);
- return policies.backlog_quota_map;
+ validateNamespacePolicyOperationAsync(namespaceName, PolicyName.BACKLOG,
+ PolicyOperation.READ)
+ .thenCompose(__ -> getNamespacePoliciesAsync(namespaceName))
+ .thenAccept(policies -> asyncResponse.resume(policies.backlog_quota_map))
+ .exceptionally(ex -> {
+ log.error("[{}] Failed to get backlog quota map on namespace {}", clientAppId(), namespaceName, ex);
+ resumeAsyncResponseExceptionally(asyncResponse, ex);
+ return null;
+ });
}
@POST