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 2019/02/21 18:20:23 UTC

[pulsar] branch master updated: Expose Get/SetSubscriptionDispatchRate subcommands in CmdNamespaces. (#3646)

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 411d88d  Expose Get/SetSubscriptionDispatchRate subcommands in CmdNamespaces. (#3646)
411d88d is described below

commit 411d88d232060c3d4c8093d94ce5fdcfb34476d6
Author: Fangbin Sun <su...@gmail.com>
AuthorDate: Fri Feb 22 02:20:14 2019 +0800

    Expose Get/SetSubscriptionDispatchRate subcommands in CmdNamespaces. (#3646)
---
 .../pulsar/admin/cli/PulsarAdminToolTest.java      | 46 ++++++++++++++++++++++
 .../org/apache/pulsar/admin/cli/CmdNamespaces.java |  5 ++-
 site2/docs/reference-pulsar-admin.md               | 25 ++++++++++++
 3 files changed, 75 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 95ef4ee..d4c2cd3 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
@@ -27,6 +27,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
 import java.util.EnumSet;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.pulsar.client.admin.Bookies;
 import org.apache.pulsar.client.admin.BrokerStats;
@@ -47,11 +48,13 @@ import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy;
 import org.apache.pulsar.common.policies.data.BookieInfo;
 import org.apache.pulsar.common.policies.data.BundlesData;
 import org.apache.pulsar.common.policies.data.ClusterData;
+import org.apache.pulsar.common.policies.data.DispatchRate;
 import org.apache.pulsar.common.policies.data.FailureDomain;
 import org.apache.pulsar.common.policies.data.PersistencePolicies;
 import org.apache.pulsar.common.policies.data.Policies;
 import org.apache.pulsar.common.policies.data.ResourceQuota;
 import org.apache.pulsar.common.policies.data.RetentionPolicies;
+import org.apache.pulsar.common.policies.data.SubscribeRate;
 import org.apache.pulsar.common.policies.data.TenantInfo;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Matchers;
@@ -400,6 +403,49 @@ public class PulsarAdminToolTest {
 
         namespaces.run(split("set-max-consumers-per-subscription myprop/clust/ns1 -c 3"));
         verify(mockNamespaces).setMaxConsumersPerSubscription("myprop/clust/ns1", 3);
+
+        mockNamespaces = mock(Namespaces.class);
+        when(admin.namespaces()).thenReturn(mockNamespaces);
+        namespaces = new CmdNamespaces(admin);
+
+        namespaces.run(split("set-dispatch-rate myprop/clust/ns1 -md -1 -bd -1 -dt 2"));
+        verify(mockNamespaces).setDispatchRate("myprop/clust/ns1", new DispatchRate(-1, -1, 2));
+
+        namespaces.run(split("get-dispatch-rate myprop/clust/ns1"));
+        verify(mockNamespaces).getDispatchRate("myprop/clust/ns1");
+
+        namespaces.run(split("set-subscribe-rate myprop/clust/ns1 -sr 2 -st 60"));
+        verify(mockNamespaces).setSubscribeRate("myprop/clust/ns1", new SubscribeRate(2, 60));
+
+        namespaces.run(split("get-subscribe-rate myprop/clust/ns1"));
+        verify(mockNamespaces).getSubscribeRate("myprop/clust/ns1");
+
+        namespaces.run(split("set-subscription-dispatch-rate myprop/clust/ns1 -md -1 -bd -1 -dt 2"));
+        verify(mockNamespaces).setSubscriptionDispatchRate("myprop/clust/ns1", new DispatchRate(-1, -1, 2));
+
+        namespaces.run(split("get-subscription-dispatch-rate myprop/clust/ns1"));
+        verify(mockNamespaces).getSubscriptionDispatchRate("myprop/clust/ns1");
+
+        namespaces.run(split("get-compaction-threshold myprop/clust/ns1"));
+        verify(mockNamespaces).getCompactionThreshold("myprop/clust/ns1");
+
+        namespaces.run(split("set-compaction-threshold myprop/clust/ns1 -t 1G"));
+        verify(mockNamespaces).setCompactionThreshold("myprop/clust/ns1", 1024 * 1024 * 1024);
+
+        namespaces.run(split("get-offload-threshold myprop/clust/ns1"));
+        verify(mockNamespaces).getOffloadThreshold("myprop/clust/ns1");
+
+        namespaces.run(split("set-offload-threshold myprop/clust/ns1 -s 1G"));
+        verify(mockNamespaces).setOffloadThreshold("myprop/clust/ns1", 1024 * 1024 * 1024);
+
+        namespaces.run(split("get-offload-deletion-lag myprop/clust/ns1"));
+        verify(mockNamespaces).getOffloadDeleteLagMs("myprop/clust/ns1");
+
+        namespaces.run(split("set-offload-deletion-lag myprop/clust/ns1 -l 1d"));
+        verify(mockNamespaces).setOffloadDeleteLag("myprop/clust/ns1", 24 * 60 * 60, TimeUnit.SECONDS);
+
+        namespaces.run(split("clear-offload-deletion-lag myprop/clust/ns1"));
+        verify(mockNamespaces).clearOffloadDeleteLag("myprop/clust/ns1");
     }
 
     @Test
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 ededa78..a107411 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
@@ -544,7 +544,7 @@ public class CmdNamespaces extends CmdBase {
 
 
     @Parameters(commandDescription = "Set subscription message-dispatch-rate for all subscription of the namespace")
-    private class SetSuscriptionDispatchRate extends CliCommand {
+    private class SetSubscriptionDispatchRate extends CliCommand {
         @Parameter(description = "tenant/namespace\n", required = true)
         private java.util.List<String> params;
 
@@ -1062,6 +1062,9 @@ public class CmdNamespaces extends CmdBase {
         jcommander.addCommand("set-subscribe-rate", new SetSubscribeRate());
         jcommander.addCommand("get-subscribe-rate", new GetSubscribeRate());
 
+        jcommander.addCommand("set-subscription-dispatch-rate", new SetSubscriptionDispatchRate());
+        jcommander.addCommand("get-subscription-dispatch-rate", new GetSubscriptionDispatchRate());
+
         jcommander.addCommand("clear-backlog", new ClearBacklog());
 
         jcommander.addCommand("unsubscribe", new Unsubscribe());
diff --git a/site2/docs/reference-pulsar-admin.md b/site2/docs/reference-pulsar-admin.md
index 2397380..65356ae 100644
--- a/site2/docs/reference-pulsar-admin.md
+++ b/site2/docs/reference-pulsar-admin.md
@@ -692,6 +692,8 @@ Subcommands
 * `get-dispatch-rate`
 * `set-subscribe-rate`
 * `get-subscribe-rate`
+* `set-subscription-dispatch-rate`
+* `get-subscription-dispatch-rate`
 * `clear-backlog`
 * `unsubscribe`
 * `set-encryption-required`
@@ -1083,6 +1085,29 @@ Usage
 $ pulsar-admin namespaces get-subscribe-rate tenant/namespace
 ```
 
+### `set-subscription-dispatch-rate`
+Set subscription message-dispatch-rate for all subscription of the namespace
+
+Usage
+```bash
+$ pulsar-admin namespaces set-subscription-dispatch-rate tenant/namespace options
+```
+
+Options
+|Flag|Description|Default|
+|----|---|---|
+|`-bd`, `--byte-dispatch-rate`|The byte dispatch rate (default -1 will be overwrite if not passed)|-1|
+|`-dt`, `--dispatch-rate-period`|The dispatch rate period in second type (default 1 second will be overwrite if not passed)|1|
+|`-md`, `--sub-msg-dispatch-rate`|The message dispatch rate (default -1 will be overwrite if not passed)|-1|
+
+### `get-subscription-dispatch-rate`
+Get subscription configured message-dispatch-rate for all topics of the namespace (Disabled if value < 0)
+
+Usage
+```bash
+$ pulsar-admin namespaces get-subscription-dispatch-rate tenant/namespace
+```
+
 ### `clear-backlog`
 Clear the backlog for a namespace