From c2ff9fecaa86f4961249fffb463984cacc6dcaa0 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Tue, 15 Dec 2020 14:11:57 +0800 Subject: [PATCH 1/2] Fix the metadata setup compatibility issue --- *Motivation* For keeping the compatibility of the setup metadata command. We should avoid delete the existing arguments. If we need to change it, it's better to keep the old arguments and mark it deprecate and hide it. --- .../pulsar/PulsarClusterMetadataSetup.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java index b533fa3c02f6a..fa033eef3ebc1 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java @@ -115,6 +115,13 @@ private static class Arguments { description = "The metadata service URI of the existing BookKeeper cluster that you want to use") private String existingBkMetadataServiceUri; + @Deprecated + @Parameter(names = { + "--bookkeeper-metadata-service-uri"}, + description = "The metadata service URI of the existing BookKeeper cluster that you want to use", + hidden = true) + private String bookieMetadataServiceUri; + @Parameter(names = { "-h", "--help" }, description = "Show this help message") private boolean help = false; } @@ -178,19 +185,23 @@ public static void main(String[] args) throws Exception { // Format BookKeeper ledger storage metadata ServerConfiguration bkConf = new ServerConfiguration(); - if (arguments.existingBkMetadataServiceUri == null) { + if (arguments.existingBkMetadataServiceUri == null && arguments.bookieMetadataServiceUri == null) { bkConf.setZkServers(arguments.zookeeper); bkConf.setZkTimeout(arguments.zkSessionTimeoutMillis); if (localZk.exists("/ledgers", false) == null // only format if /ledgers doesn't exist - && !BookKeeperAdmin.format(bkConf, false /* interactive */, false /* force */)) { + && !BookKeeperAdmin.format(bkConf, false /* interactive */, false /* force */)) { throw new IOException("Failed to initialize BookKeeper metadata"); } } // Format BookKeeper stream storage metadata if (arguments.numStreamStorageContainers > 0) { - String uriStr = arguments.existingBkMetadataServiceUri == null - ? bkConf.getMetadataServiceUri() : arguments.existingBkMetadataServiceUri; + String uriStr = bkConf.getMetadataServiceUri(); + if (arguments.existingBkMetadataServiceUri != null) { + uriStr = arguments.existingBkMetadataServiceUri; + } else if (arguments.bookieMetadataServiceUri != null) { + uriStr = arguments.bookieMetadataServiceUri; + } ServiceURI bkMetadataServiceUri = ServiceURI.create(uriStr); ClusterInitializer initializer = new ZkClusterInitializer(arguments.zookeeper); initializer.initializeCluster(bkMetadataServiceUri.getUri(), arguments.numStreamStorageContainers); From 07c3f787f465a43ef9a999425157000b9bc0f8cf Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Wed, 16 Dec 2020 15:13:46 +0800 Subject: [PATCH 2/2] Add unit test for this --- .../pulsar/PulsarClusterMetadataSetup.java | 2 ++ .../zookeeper/ClusterMetadataSetupTest.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java index fa033eef3ebc1..c7e1531521d17 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java @@ -115,6 +115,8 @@ private static class Arguments { description = "The metadata service URI of the existing BookKeeper cluster that you want to use") private String existingBkMetadataServiceUri; + // Hide and marked as deprecated this flag because we use the new name '--existing-bk-metadata-service-uri' to + // pass the service url. For compatibility of the command, we should keep both to avoid the exceptions. @Deprecated @Parameter(names = { "--bookkeeper-metadata-service-uri"}, 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 8c2c00791ea80..163dc6bf60c2f 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 @@ -68,6 +68,22 @@ public void testSetupWithBkMetadataServiceUri() throws Exception { // expected not exist assertNull(localZk.exists("/ledgers", false)); + String[] bookkeeperMetadataServiceUriArgs = { + "--cluster", "testReSetupClusterMetadata-cluster", + "--zookeeper", zkConnection, + "--configuration-store", zkConnection, + "--bookkeeper-metadata-service-uri", "zk+null://" + zkConnection + "/chroot/ledgers", + "--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(bookkeeperMetadataServiceUriArgs); + ZooKeeper bookkeeperMetadataServiceUriZk = PulsarClusterMetadataSetup.initZk(zkConnection, 30000); + // expected not exist + assertNull(bookkeeperMetadataServiceUriZk.exists("/ledgers", false)); + String[] args1 = { "--cluster", "testReSetupClusterMetadata-cluster", "--zookeeper", zkConnection,