You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/12/21 00:56:56 UTC
[pulsar] 10/15: Fix deleting tenants with active namespaces with 500. (#12848)
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 a0db36fd5c54e05180709f19317c0dfcdbb31063
Author: Jiwei Guo <te...@apache.org>
AuthorDate: Fri Nov 19 22:56:42 2021 +0800
Fix deleting tenants with active namespaces with 500. (#12848)
(cherry picked from commit 1646be2e29ed1109cc76b11081e829f30809362d)
---
.../java/org/apache/pulsar/broker/resources/TenantResources.java | 4 ++--
.../java/org/apache/pulsar/broker/admin/impl/TenantsBase.java | 6 +++++-
.../test/java/org/apache/pulsar/broker/admin/AdminApiTest.java | 8 ++++++++
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java
index 9582057..36c88cf 100644
--- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java
@@ -134,7 +134,7 @@ public class TenantResources extends BaseResources<TenantInfo> {
}
if (children != null && !children.isEmpty()) {
checkNs.completeExceptionally(
- new IllegalStateException("Tenant has active namespace"));
+ new IllegalStateException("The tenant still has active namespaces"));
return;
}
String namespace = NamespaceName.get(tenant, clusterOrNamespace).toString();
@@ -145,7 +145,7 @@ public class TenantResources extends BaseResources<TenantInfo> {
getAsync(joinPath(BASE_POLICIES_PATH, namespace)).thenApply(data -> {
if (data.isPresent()) {
checkNs.completeExceptionally(new IllegalStateException(
- "Tenant has active namespace"));
+ "The tenant still has active namespaces"));
} else {
checkNs.complete(null);
}
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java
index c5f5402..209a532 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java
@@ -268,7 +268,11 @@ public class TenantsBase extends PulsarWebResource {
.whenComplete((ignore, ex) -> {
if (ex != null) {
log.error("[{}] Failed to delete tenant {}", clientAppId(), tenant, ex);
- asyncResponse.resume(new RestException(ex));
+ if (ex.getCause() instanceof IllegalStateException) {
+ asyncResponse.resume(new RestException(Status.CONFLICT, ex.getCause()));
+ } else {
+ asyncResponse.resume(new RestException(ex));
+ }
} else {
log.info("[{}] Deleted tenant {}", clientAppId(), tenant);
asyncResponse.resume(Response.noContent().build());
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
index 2c3f704..3e87f13 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
@@ -670,6 +670,14 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
assertEquals(admin.tenants().getTenantInfo("prop-xyz"), newTenantAdmin);
+ try {
+ admin.tenants().deleteTenant("prop-xyz");
+ fail("should have failed");
+ } catch (PulsarAdminException e) {
+ assertTrue(e instanceof ConflictException);
+ assertEquals(e.getStatusCode(), 409);
+ assertEquals(e.getMessage(), "The tenant still has active namespaces");
+ }
admin.namespaces().deleteNamespace("prop-xyz/ns1");
admin.tenants().deleteTenant("prop-xyz");
assertEquals(admin.tenants().getTenants(), Lists.newArrayList());