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

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


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new cbae8cfc875 [improve][broker] Make cluster metadata teardown command 
support metadata config path (#23520)
cbae8cfc875 is described below

commit cbae8cfc8750a8206f93e56b9b720229756a6781
Author: Kai Wang <[email protected]>
AuthorDate: Tue Oct 29 17:44:12 2024 +0800

    [improve][broker] Make cluster metadata teardown command support metadata 
config path (#23520)
    
    (cherry picked from commit 69ca0cb4351c1fa9e79f5b4c1ad7782de6e5d702)
---
 .../pulsar/PulsarClusterMetadataTeardown.java      | 29 ++++++-
 .../broker/zookeeper/ClusterMetadataSetupTest.java |  2 +-
 .../zookeeper/ClusterMetadataTeardownTest.java     | 90 ++++++++++++++++++++++
 3 files changed, 118 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataTeardown.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataTeardown.java
index a2984a352b9..964a49fe10f 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataTeardown.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataTeardown.java
@@ -37,6 +37,7 @@ import org.apache.pulsar.metadata.api.MetadataStore;
 import org.apache.pulsar.metadata.api.MetadataStoreConfig;
 import org.apache.pulsar.metadata.api.MetadataStoreFactory;
 import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended;
+import org.apache.pulsar.metadata.impl.ZKMetadataStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import picocli.CommandLine;
@@ -52,9 +53,17 @@ public class PulsarClusterMetadataTeardown {
     @Command(name = "delete-cluster-metadata", showDefaultValues = true, scope 
= ScopeType.INHERIT)
     private static class Arguments {
         @Option(names = { "-zk",
-                "--zookeeper"}, description = "Local ZooKeeper quorum 
connection string", required = true)
+                "--zookeeper"}, description = "Local ZooKeeper quorum 
connection string")
         private String zookeeper;
 
+        @Option(names = {"-md",
+                "--metadata-store"}, description = "Metadata Store service 
url. eg: zk:my-zk:2181")
+        private String metadataStoreUrl;
+
+        @Option(names = {"-mscp",
+                "--metadata-store-config-path"}, description = "Metadata Store 
config path")
+        private String metadataStoreConfigPath;
+
         @Option(names = {
                 "--zookeeper-session-timeout-ms"
         }, description = "Local zookeeper session timeout ms")
@@ -66,6 +75,11 @@ public class PulsarClusterMetadataTeardown {
         @Option(names = { "-cs", "--configuration-store" }, description = 
"Configuration Store connection string")
         private String configurationStore;
 
+        @Option(names = {"-cmscp",
+                "--configuration-metadata-store-config-path"}, description = 
"Configuration Metadata Store config path",
+                hidden = false)
+        private String configurationStoreConfigPath;
+
         @Option(names = { "--bookkeeper-metadata-service-uri" }, description = 
"Metadata service uri of BookKeeper")
         private String bkMetadataServiceUri;
 
@@ -99,11 +113,21 @@ public class PulsarClusterMetadataTeardown {
             throw e;
         }
 
+        if (arguments.metadataStoreUrl == null && arguments.zookeeper == null) 
{
+            commander.usage(commander.getOut());
+            throw new IllegalArgumentException("Metadata store address 
argument is required (--metadata-store)");
+        }
+
+        if (arguments.metadataStoreUrl == null) {
+            arguments.metadataStoreUrl = ZKMetadataStore.ZK_SCHEME_IDENTIFIER 
+ arguments.zookeeper;
+        }
+
         @Cleanup
-        MetadataStoreExtended metadataStore = 
MetadataStoreExtended.create(arguments.zookeeper,
+        MetadataStoreExtended metadataStore = 
MetadataStoreExtended.create(arguments.metadataStoreUrl,
                 MetadataStoreConfig.builder()
                         .sessionTimeoutMillis(arguments.zkSessionTimeoutMillis)
                         .metadataStoreName(MetadataStoreConfig.METADATA_STORE)
+                        .configFilePath(arguments.metadataStoreConfigPath)
                         .build());
 
         if (arguments.bkMetadataServiceUri != null) {
@@ -127,6 +151,7 @@ public class PulsarClusterMetadataTeardown {
             @Cleanup
             MetadataStore configMetadataStore = 
MetadataStoreFactory.create(arguments.configurationStore,
                     
MetadataStoreConfig.builder().sessionTimeoutMillis(arguments.zkSessionTimeoutMillis)
+                            
.configFilePath(arguments.configurationStoreConfigPath)
                             
.metadataStoreName(MetadataStoreConfig.CONFIGURATION_METADATA_STORE).build());
             deleteRecursively(configMetadataStore, "/admin/clusters/" + 
arguments.cluster).join();
         }
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ClusterMetadataSetupTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ClusterMetadataSetupTest.java
index 6a7d54dbf7c..cc25cd95c64 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ClusterMetadataSetupTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ClusterMetadataSetupTest.java
@@ -533,7 +533,7 @@ public class ClusterMetadataSetupTest {
             log.info("ZooKeeper started at {}", hostPort);
         }
 
-        private void clear() {
+        void clear() {
             zks.getZKDatabase().clear();
         }
 
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ClusterMetadataTeardownTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ClusterMetadataTeardownTest.java
new file mode 100644
index 00000000000..5184afade9c
--- /dev/null
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ClusterMetadataTeardownTest.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.broker.zookeeper;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import java.util.SortedMap;
+import org.apache.pulsar.PulsarClusterMetadataSetup;
+import org.apache.pulsar.PulsarClusterMetadataTeardown;
+import org.apache.pulsar.common.policies.data.ClusterData;
+import org.apache.pulsar.common.util.ObjectMapperFactory;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+public class ClusterMetadataTeardownTest {
+
+    private ClusterMetadataSetupTest.ZookeeperServerTest localZkS;
+
+    @BeforeClass
+    void setup() throws Exception {
+        localZkS = new ClusterMetadataSetupTest.ZookeeperServerTest(0);
+        localZkS.start();
+    }
+
+    @AfterClass
+    void teardown() throws Exception {
+        localZkS.close();
+    }
+
+    @AfterMethod(alwaysRun = true)
+    void cleanup() {
+        localZkS.clear();
+    }
+
+    @Test
+    public void testSetupClusterMetadataAndTeardown() throws Exception {
+        String[] args1 = {
+                "--cluster", "testReSetupClusterMetadata-cluster",
+                "--zookeeper", "127.0.0.1:" + localZkS.getZookeeperPort(),
+                "--configuration-store", "127.0.0.1:" + 
localZkS.getZookeeperPort(),
+                "--configuration-metadata-store-config-path", 
"src/test/resources/conf/zk_client_enable_sasl.conf",
+                "--web-service-url", "http://127.0.0.1:8080";,
+                "--web-service-url-tls", "https://127.0.0.1:8443";,
+                "--broker-service-url", "pulsar://127.0.0.1:6650",
+                "--broker-service-url-tls", "pulsar+ssl://127.0.0.1:6651"
+        };
+        PulsarClusterMetadataSetup.main(args1);
+        SortedMap<String, String> data1 = localZkS.dumpData();
+        String clusterDataJson = 
data1.get("/admin/clusters/testReSetupClusterMetadata-cluster");
+        assertNotNull(clusterDataJson);
+        ClusterData clusterData = ObjectMapperFactory
+                .getMapper()
+                .reader()
+                .readValue(clusterDataJson, ClusterData.class);
+        assertEquals(clusterData.getServiceUrl(), "http://127.0.0.1:8080";);
+        assertEquals(clusterData.getServiceUrlTls(), "https://127.0.0.1:8443";);
+        assertEquals(clusterData.getBrokerServiceUrl(), 
"pulsar://127.0.0.1:6650");
+        assertEquals(clusterData.getBrokerServiceUrlTls(), 
"pulsar+ssl://127.0.0.1:6651");
+        assertFalse(clusterData.isBrokerClientTlsEnabled());
+
+        String[] args2 = {
+                "--cluster", "testReSetupClusterMetadata-cluster",
+                "--zookeeper", "127.0.0.1:" + localZkS.getZookeeperPort(),
+                "--configuration-store", "127.0.0.1:" + 
localZkS.getZookeeperPort(),
+                "--configuration-metadata-store-config-path", 
"src/test/resources/conf/zk_client_enable_sasl.conf",
+        };
+        PulsarClusterMetadataTeardown.main(args2);
+        SortedMap<String, String> data2 = localZkS.dumpData();
+        
assertFalse(data2.containsKey("/admin/clusters/testReSetupClusterMetadata-cluster"));
+    }
+}

Reply via email to