Skip to content

Commit f30fd23

Browse files
committed
[improve][broker][PIP-149]make getBacklogQuotaMap method async in Namespaces
1 parent d61b06a commit f30fd23

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java

+13-6
Original file line numberDiff line numberDiff line change
@@ -988,14 +988,21 @@ public DispatchRate getReplicatorDispatchRate(@PathParam("tenant") String tenant
988988
@ApiOperation(hidden = true, value = "Get backlog quota map on a namespace.")
989989
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"),
990990
@ApiResponse(code = 404, message = "Namespace does not exist") })
991-
public Map<BacklogQuotaType, BacklogQuota> getBacklogQuotaMap(@PathParam("property") String property,
991+
public void getBacklogQuotaMap(
992+
@Suspended final AsyncResponse asyncResponse,
993+
@PathParam("property") String property,
992994
@PathParam("cluster") String cluster, @PathParam("namespace") String namespace) {
993995
validateNamespaceName(property, cluster, namespace);
994-
validateNamespacePolicyOperation(NamespaceName.get(property, namespace),
995-
PolicyName.BACKLOG, PolicyOperation.READ);
996-
997-
Policies policies = getNamespacePolicies(namespaceName);
998-
return policies.backlog_quota_map;
996+
validateNamespacePolicyOperationAsync(NamespaceName.get(property, namespace), PolicyName.BACKLOG,
997+
PolicyOperation.READ)
998+
.thenCompose(__ -> getNamespacePoliciesAsync(namespaceName))
999+
.thenAccept(policies -> asyncResponse.resume(policies.backlog_quota_map))
1000+
.exceptionally(ex -> {
1001+
log.error("[{}] Failed to get backlog quota map on namespace {}:{}", clientAppId(), namespaceName,
1002+
ex.getCause().getMessage(), ex);
1003+
resumeAsyncResponseExceptionally(asyncResponse, ex);
1004+
return null;
1005+
});
9991006
}
10001007

10011008
@POST

pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java

+13-5
Original file line numberDiff line numberDiff line change
@@ -1037,13 +1037,21 @@ public DispatchRate getReplicatorDispatchRate(@PathParam("tenant") String tenant
10371037
@ApiOperation(value = "Get backlog quota map on a namespace.")
10381038
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"),
10391039
@ApiResponse(code = 404, message = "Namespace does not exist") })
1040-
public Map<BacklogQuotaType, BacklogQuota> getBacklogQuotaMap(@PathParam("tenant") String tenant,
1040+
public void getBacklogQuotaMap(
1041+
@Suspended final AsyncResponse asyncResponse,
1042+
@PathParam("tenant") String tenant,
10411043
@PathParam("namespace") String namespace) {
10421044
validateNamespaceName(tenant, namespace);
1043-
validateNamespacePolicyOperation(
1044-
NamespaceName.get(tenant, namespace), PolicyName.BACKLOG, PolicyOperation.READ);
1045-
Policies policies = getNamespacePolicies(namespaceName);
1046-
return policies.backlog_quota_map;
1045+
validateNamespacePolicyOperationAsync(NamespaceName.get(tenant, namespace), PolicyName.BACKLOG,
1046+
PolicyOperation.READ)
1047+
.thenCompose(__ -> getNamespacePoliciesAsync(namespaceName))
1048+
.thenAccept(policies -> asyncResponse.resume(policies.backlog_quota_map))
1049+
.exceptionally(ex -> {
1050+
log.error("[{}] Failed to get backlog quota map on namespace {}:{}", clientAppId(), namespaceName,
1051+
ex.getCause().getMessage(), ex);
1052+
resumeAsyncResponseExceptionally(asyncResponse, ex);
1053+
return null;
1054+
});
10471055
}
10481056

10491057
@POST

0 commit comments

Comments
 (0)