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 2024/01/11 01:23:48 UTC

(pulsar) branch master updated: [improve][cli] error out when --destinationBroker is set when --bundle is empty (#21879)

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

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 66a1599271a [improve][cli] error out when --destinationBroker is set when --bundle is empty (#21879)
66a1599271a is described below

commit 66a1599271a040dcde19325d8ffff182a4bb9df7
Author: Heesung Sohn <10...@users.noreply.github.com>
AuthorDate: Wed Jan 10 17:23:41 2024 -0800

    [improve][cli] error out when --destinationBroker is set when --bundle is empty (#21879)
---
 .../java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java    | 9 +++++++++
 .../src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java | 8 +++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
index 07efa5165e5..fdcf6bdac35 100644
--- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
+++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
@@ -468,6 +468,11 @@ public class PulsarAdminToolTest {
         namespaces.run(split("remove-replicator-dispatch-rate myprop/clust/ns1"));
         verify(mockNamespaces).removeReplicatorDispatchRate("myprop/clust/ns1");
 
+
+        assertFalse(namespaces.run(split("unload myprop/clust/ns1 -d broker")));
+        verify(mockNamespaces, times(0)).unload("myprop/clust/ns1");
+
+        namespaces = new CmdNamespaces(() -> admin);
         namespaces.run(split("unload myprop/clust/ns1"));
         verify(mockNamespaces).unload("myprop/clust/ns1");
 
@@ -484,6 +489,10 @@ public class PulsarAdminToolTest {
         namespaces.run(split("unload myprop/clust/ns1 -b 0x80000000_0xffffffff"));
         verify(mockNamespaces).unloadNamespaceBundle("myprop/clust/ns1", "0x80000000_0xffffffff", null);
 
+        namespaces = new CmdNamespaces(() -> admin);
+        namespaces.run(split("unload myprop/clust/ns1 -b 0x80000000_0xffffffff -d broker"));
+        verify(mockNamespaces).unloadNamespaceBundle("myprop/clust/ns1", "0x80000000_0xffffffff", "broker");
+
         namespaces.run(split("split-bundle myprop/clust/ns1 -b 0x00000000_0xffffffff"));
         verify(mockNamespaces).splitNamespaceBundle("myprop/clust/ns1", "0x00000000_0xffffffff", false, null);
 
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java
index c7658cbf770..f37d5b383f6 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java
@@ -866,13 +866,19 @@ public class CmdNamespaces extends CmdBase {
         private String bundle;
 
         @Parameter(names = { "--destinationBroker", "-d" },
-                description = "Target brokerWebServiceAddress to which the bundle has to be allocated to")
+                description = "Target brokerWebServiceAddress to which the bundle has to be allocated to. "
+                        + "--destinationBroker cannot be set when --bundle is not specified.")
         private String destinationBroker;
 
         @Override
         void run() throws PulsarAdminException {
             String namespace = validateNamespace(params);
+
+
             if (bundle == null) {
+                if (StringUtils.isNotBlank(destinationBroker)) {
+                    throw new ParameterException("--destinationBroker cannot be set when --bundle is not specified.");
+                }
                 getAdmin().namespaces().unload(namespace);
             } else {
                 getAdmin().namespaces().unloadNamespaceBundle(namespace, bundle, destinationBroker);