This is an automated email from the ASF dual-hosted git repository. yubiao pushed a commit to branch branch-2.10 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit a863e7d6b291cde37438044203ea766e1dfaef87 Author: fengyubiao <[email protected]> AuthorDate: Sat Jan 28 20:19:46 2023 +0800 [improve] [admin] Make the default value of param --get-subscription-backlog-size of admin API topics stats true (#19302) (cherry picked from commit e417fe7895253f7cf4e6b2d019ab615f4574098a) --- .../java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java | 4 ++-- .../pulsar/broker/service/persistent/PersistentSubscription.java | 2 ++ .../src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java | 7 +++++-- .../test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java | 7 ++++--- .../src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java | 6 +++--- .../pulsar/common/policies/data/stats/SubscriptionStatsImpl.java | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java index af5120fa9f9..74f66b87d0a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java @@ -1076,7 +1076,7 @@ public class PersistentTopics extends PersistentTopicsBase { @QueryParam("getPreciseBacklog") @DefaultValue("false") boolean getPreciseBacklog, @ApiParam(value = "If return backlog size for each subscription, require locking on ledger so be careful " + "not to use when there's heavy traffic.") - @QueryParam("subscriptionBacklogSize") @DefaultValue("false") boolean subscriptionBacklogSize, + @QueryParam("subscriptionBacklogSize") @DefaultValue("true") boolean subscriptionBacklogSize, @ApiParam(value = "If return time of the earliest message in backlog") @QueryParam("getEarliestTimeInBacklog") @DefaultValue("false") boolean getEarliestTimeInBacklog) { validateTopicName(tenant, namespace, encodedTopic); @@ -1160,7 +1160,7 @@ public class PersistentTopics extends PersistentTopicsBase { @QueryParam("getPreciseBacklog") @DefaultValue("false") boolean getPreciseBacklog, @ApiParam(value = "If return backlog size for each subscription, require locking on ledger so be careful " + "not to use when there's heavy traffic.") - @QueryParam("subscriptionBacklogSize") @DefaultValue("false") boolean subscriptionBacklogSize, + @QueryParam("subscriptionBacklogSize") @DefaultValue("true") boolean subscriptionBacklogSize, @ApiParam(value = "If return the earliest time in backlog") @QueryParam("getEarliestTimeInBacklog") @DefaultValue("false") boolean getEarliestTimeInBacklog) { try { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java index ff1c654f1d8..b0d6911ac3e 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java @@ -997,6 +997,8 @@ public class PersistentSubscription extends AbstractSubscription implements Subs if (subscriptionBacklogSize) { subStats.backlogSize = ((ManagedLedgerImpl) topic.getManagedLedger()) .getEstimatedBacklogSize((PositionImpl) cursor.getMarkDeletedPosition()); + } else { + subStats.backlogSize = -1; } if (getEarliestTimeInBacklog && subStats.msgBacklog > 0) { ManagedLedgerImpl managedLedger = ((ManagedLedgerImpl) cursor.getManagedLedger()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 7206de36090..92f668d19cf 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -1172,14 +1172,16 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest { assertEquals(topicStats.getEarliestMsgPublishTimeInBacklogs(), 0); assertEquals(topicStats.getSubscriptions().get(subName).getEarliestMsgPublishTimeInBacklog(), 0); + assertEquals(topicStats.getSubscriptions().get(subName).getBacklogSize(), -1); // publish several messages publishMessagesOnPersistentTopic(topic, 10); Thread.sleep(1000); - topicStats = admin.topics().getStats(topic, false, false, true); + topicStats = admin.topics().getStats(topic, false, true, true); assertTrue(topicStats.getEarliestMsgPublishTimeInBacklogs() > 0); assertTrue(topicStats.getSubscriptions().get(subName).getEarliestMsgPublishTimeInBacklog() > 0); + assertTrue(topicStats.getSubscriptions().get(subName).getBacklogSize() > 0); for (int i = 0; i < 10; i++) { Message<byte[]> message = consumer.receive(); @@ -1187,9 +1189,10 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest { } Thread.sleep(1000); - topicStats = admin.topics().getStats(topic, false, false, true); + topicStats = admin.topics().getStats(topic, false, true, true); assertEquals(topicStats.getEarliestMsgPublishTimeInBacklogs(), 0); assertEquals(topicStats.getSubscriptions().get(subName).getEarliestMsgPublishTimeInBacklog(), 0); + assertEquals(topicStats.getSubscriptions().get(subName).getBacklogSize(), 0); } 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 8e7e339b536..7dd6477e641 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 @@ -1337,7 +1337,7 @@ public class PulsarAdminToolTest { verify(mockTopics).deleteSubscription("persistent://myprop/clust/ns1/ds1", "sub1", false); cmdTopics.run(split("stats persistent://myprop/clust/ns1/ds1")); - verify(mockTopics).getStats("persistent://myprop/clust/ns1/ds1", false, false, false); + verify(mockTopics).getStats("persistent://myprop/clust/ns1/ds1", false, true, false); cmdTopics.run(split("stats-internal persistent://myprop/clust/ns1/ds1")); verify(mockTopics).getInternalStats("persistent://myprop/clust/ns1/ds1", false); @@ -1374,7 +1374,8 @@ public class PulsarAdminToolTest { verify(mockTopics).getInternalInfo("persistent://myprop/clust/ns1/ds1"); cmdTopics.run(split("partitioned-stats persistent://myprop/clust/ns1/ds1 --per-partition")); - verify(mockTopics).getPartitionedStats("persistent://myprop/clust/ns1/ds1", true, false, false); + verify(mockTopics).getPartitionedStats("persistent://myprop/clust/ns1/ds1", + true, true, false); cmdTopics.run(split("partitioned-stats-internal persistent://myprop/clust/ns1/ds1")); verify(mockTopics).getPartitionedInternalStats("persistent://myprop/clust/ns1/ds1"); @@ -1872,7 +1873,7 @@ public class PulsarAdminToolTest { CmdTopics topics = new CmdTopics(() -> admin); topics.run(split("stats non-persistent://myprop/ns1/ds1")); - verify(mockTopics).getStats("non-persistent://myprop/ns1/ds1", false, false, false); + verify(mockTopics).getStats("non-persistent://myprop/ns1/ds1", false, true, false); topics.run(split("stats-internal non-persistent://myprop/ns1/ds1")); verify(mockTopics).getInternalStats("non-persistent://myprop/ns1/ds1", false); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java index 056847c7583..b0182eb9118 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java @@ -718,8 +718,8 @@ public class CmdTopics extends CmdBase { @Parameter(names = { "-sbs", "--get-subscription-backlog-size" }, description = "Set true to get backlog size for each subscription" - + ", locking required.") - private boolean subscriptionBacklogSize = false; + + ", locking required. If set to false, the attribute 'backlogSize' in the response will be -1") + private boolean subscriptionBacklogSize = true; @Parameter(names = { "-etb", "--get-earliest-time-in-backlog" }, description = "Set true to get earliest time in backlog") @@ -784,7 +784,7 @@ public class CmdTopics extends CmdBase { @Parameter(names = { "-sbs", "--get-subscription-backlog-size" }, description = "Set true to get backlog size for each subscription" + ", locking required.") - private boolean subscriptionBacklogSize = false; + private boolean subscriptionBacklogSize = true; @Override void run() throws Exception { diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/SubscriptionStatsImpl.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/SubscriptionStatsImpl.java index 53112295aa2..80af909254c 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/SubscriptionStatsImpl.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/SubscriptionStatsImpl.java @@ -58,7 +58,7 @@ public class SubscriptionStatsImpl implements SubscriptionStats { /** Number of messages in the subscription backlog. */ public long msgBacklog; - /** Size of backlog in byte. **/ + /** Size of backlog in byte, -1 means that the argument "subscriptionBacklogSize" is false when calling the API. **/ public long backlogSize; /** Get the publish time of the earliest message in the backlog. */
