This is an automated email from the ASF dual-hosted git repository.

mattisonchao pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-2.9 by this push:
     new 19bd78a25bd [branch-2.9] fix:remove the loadbalance/bundle-data node 
(#15730)
19bd78a25bd is described below

commit 19bd78a25bd9b3bd07438c3a9869014d9d900fa3
Author: Qiang Zhao <[email protected]>
AuthorDate: Thu May 26 12:04:05 2022 +0800

    [branch-2.9] fix:remove the loadbalance/bundle-data node (#15730)
---
 .../broker/resources/NamespaceResources.java       | 37 +++++++++++++++++++++-
 .../pulsar/broker/admin/impl/NamespacesBase.java   |  4 ++-
 .../pulsar/broker/admin/impl/TenantsBase.java      |  2 ++
 .../apache/pulsar/broker/admin/AdminApiTest2.java  |  5 +++
 4 files changed, 46 insertions(+), 2 deletions(-)

diff --git 
a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java
 
b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java
index 190d25144da..8f677f069d5 100644
--- 
a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java
+++ 
b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java
@@ -54,7 +54,7 @@ public class NamespaceResources extends 
BaseResources<Policies> {
 
     private static final String POLICIES_READONLY_FLAG_PATH = 
"/admin/flags/policies-readonly";
     private static final String NAMESPACE_BASE_PATH = "/namespace";
-
+    private static final String BUNDLE_DATA_BASE_PATH = 
"/loadbalance/bundle-data";
     public NamespaceResources(MetadataStore localStore, MetadataStore 
configurationStore, int operationTimeoutSec) {
         super(configurationStore, Policies.class, operationTimeoutSec);
         this.configurationStore = configurationStore;
@@ -281,4 +281,39 @@ public class NamespaceResources extends 
BaseResources<Policies> {
             return completableFuture;
         }
     }
+
+
+    // clear resource of `/loadbalance/bundle-data/{tenant}/{namespace}/` for 
zk-node
+    public CompletableFuture<Void> deleteBundleDataAsync(NamespaceName ns) {
+        final String namespaceBundlePath = joinPath(BUNDLE_DATA_BASE_PATH, 
ns.toString());
+        CompletableFuture<Void> future = new CompletableFuture<Void>();
+        deleteRecursiveAsync(this, namespaceBundlePath).whenComplete((ignore, 
ex) -> {
+            if (ex instanceof MetadataStoreException.NotFoundException) {
+                future.complete(null);
+            } else if (ex != null) {
+                future.completeExceptionally(ex);
+            } else {
+                future.complete(null);
+            }
+        });
+
+        return future;
+    }
+
+    // clear resource of `/loadbalance/bundle-data/{tenant}/` for zk-node
+    public CompletableFuture<Void> deleteBundleDataTenantAsync(String tenant) {
+        final String tenantBundlePath = joinPath(BUNDLE_DATA_BASE_PATH, 
tenant);
+        CompletableFuture<Void> future = new CompletableFuture<Void>();
+        deleteRecursiveAsync(this, tenantBundlePath).whenComplete((ignore, ex) 
-> {
+            if (ex instanceof MetadataStoreException.NotFoundException) {
+                future.complete(null);
+            } else if (ex != null) {
+                future.completeExceptionally(ex);
+            } else {
+                future.complete(null);
+            }
+        });
+
+        return future;
+    }
 }
\ No newline at end of file
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 a2e1dad5b10..edbe1bfe385 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
@@ -324,7 +324,9 @@ public abstract class NamespacesBase extends AdminResource {
                 // z-node can be deleted now
                 .thenCompose(ignore -> 
namespaceResources().deletePoliciesAsync(namespaceName))
                 // clear z-node of local policies
-                .thenCompose(ignore -> 
getLocalPolicies().deleteLocalPoliciesAsync(namespaceName));
+                .thenCompose(ignore -> 
getLocalPolicies().deleteLocalPoliciesAsync(namespaceName))
+                // clear /loadbalance/bundle-data
+                .thenCompose(ignore -> 
namespaceResources().deleteBundleDataAsync(namespaceName));
 
     }
 
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 209a5329701..3ec725e6f80 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
@@ -265,6 +265,8 @@ public class TenantsBase extends PulsarWebResource {
                             .clearTenantPersistence(tenant))
                     .thenCompose(ignore -> 
pulsar().getPulsarResources().getNamespaceResources()
                             .deleteTenantAsync(tenant))
+                    .thenCompose(ignore -> 
pulsar().getPulsarResources().getNamespaceResources()
+                            .deleteBundleDataTenantAsync(tenant))
                     .whenComplete((ignore, ex) -> {
                         if (ex != null) {
                             log.error("[{}] Failed to delete tenant {}", 
clientAppId(), tenant, ex);
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java
index 0bf34a16fe0..baafbc1ba42 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java
@@ -1311,7 +1311,9 @@ public class AdminApiTest2 extends 
MockedPulsarServiceBaseTest {
         assertFalse(admin.tenants().getTenants().contains(tenant));
 
         final String managedLedgersPath = "/managed-ledgers/" + tenant;
+        final String bundleDataPath = "/loadbalance/bundle-data/" + tenant;
         
assertFalse(pulsar.getLocalMetadataStore().exists(managedLedgersPath).join());
+        
assertFalse(pulsar.getLocalMetadataStore().exists(bundleDataPath).join());
     }
 
     @Test
@@ -1355,6 +1357,9 @@ public class AdminApiTest2 extends 
MockedPulsarServiceBaseTest {
 
         final String managedLedgersPath = "/managed-ledgers/" + namespace;
         
assertFalse(pulsar.getLocalMetadataStore().exists(managedLedgersPath).join());
+
+        final String bundleDataPath = "/loadbalance/bundle-data/" + namespace;
+        
assertFalse(pulsar.getLocalMetadataStore().exists(bundleDataPath).join());
     }
 
     @Test

Reply via email to