You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2021/11/29 17:03:02 UTC
[pulsar] branch branch-2.8 updated: Fix deleting tenants with active namespaces with 500. (#13020)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch branch-2.8
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.8 by this push:
new a8383d9 Fix deleting tenants with active namespaces with 500. (#13020)
a8383d9 is described below
commit a8383d961b3b6d6740c8a1f31054e5f50a768315
Author: Jiwei Guo <te...@apache.org>
AuthorDate: Tue Nov 30 01:01:42 2021 +0800
Fix deleting tenants with active namespaces with 500. (#13020)
---
.../java/org/apache/pulsar/broker/admin/impl/TenantsBase.java | 6 +++++-
.../main/java/org/apache/pulsar/broker/web/PulsarWebResource.java | 6 +++---
.../test/java/org/apache/pulsar/broker/admin/AdminApiTest.java | 8 ++++++++
3 files changed, 16 insertions(+), 4 deletions(-)
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 879e8b0..f5f3b8e 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
@@ -288,7 +288,11 @@ public class TenantsBase extends PulsarWebResource {
}
}).exceptionally(ex -> {
log.error("Failed to delete tenant due to active namespace {}", tenant, ex.getCause());
- asyncResponse.resume(new RestException(ex));
+ if (ex.getCause() instanceof IllegalStateException) {
+ asyncResponse.resume(new RestException(Status.CONFLICT, ex.getCause()));
+ } else {
+ asyncResponse.resume(new RestException(ex));
+ }
return null;
});
});
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java
index f0ee3a1..d44a812 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java
@@ -955,7 +955,7 @@ public abstract class PulsarWebResource {
}
if (children != null && !children.isEmpty()) {
checkNs.completeExceptionally(
- new RestException(Status.PRECONDITION_FAILED, "Tenant has active namespace"));
+ new IllegalStateException("The tenant still has active namespaces"));
return;
}
String namespace = NamespaceName.get(tenant, clusterOrNamespace).toString();
@@ -965,8 +965,8 @@ public abstract class PulsarWebResource {
// add it to the list
namespaceResources().getAsync(path(POLICIES, namespace)).thenApply(data -> {
if (data.isPresent()) {
- checkNs.completeExceptionally(new RestException(Status.PRECONDITION_FAILED,
- "Tenant has active namespace"));
+ checkNs.completeExceptionally(
+ new IllegalStateException("The tenant still has active namespaces"));
} else {
checkNs.complete(null);
}
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 ce9bfa4..2d9ddc4 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
@@ -673,6 +673,14 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
admin.tenants().updateTenant("prop-xyz", newTenantAdmin);
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");