This is an automated email from the ASF dual-hosted git repository.
penghui 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 e417fe78952 [improve] [admin] Make the default value of param
--get-subscription-backlog-size of admin API topics stats true (#19302)
e417fe78952 is described below
commit e417fe7895253f7cf4e6b2d019ab615f4574098a
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)
---
.../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 | 6 +++---
.../src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java | 6 +++---
.../pulsar/common/policies/data/stats/SubscriptionStatsImpl.java | 2 +-
6 files changed, 16 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 2c02955c5ab..7eeaec403d8 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
@@ -1178,7 +1178,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);
@@ -1280,7 +1280,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 21a49758724..2012aa06b30 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
@@ -1131,6 +1131,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 bfd015705cd..938b3cbb63a 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
@@ -1234,14 +1234,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();
@@ -1249,9 +1251,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 2a16d09ad0a..37b8c33e114 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
@@ -1493,7 +1493,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);
@@ -1541,7 +1541,7 @@ public class PulsarAdminToolTest {
cmdTopics.run(split("partitioned-stats
persistent://myprop/clust/ns1/ds1 --per-partition"));
verify(mockTopics).getPartitionedStats("persistent://myprop/clust/ns1/ds1",
- true, false, false, false);
+ true, false, true, false);
cmdTopics.run(split("partitioned-stats-internal
persistent://myprop/clust/ns1/ds1"));
verify(mockTopics).getPartitionedInternalStats("persistent://myprop/clust/ns1/ds1");
@@ -2107,7 +2107,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 827699283bf..8b11990dc53 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
@@ -792,8 +792,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")
@@ -858,7 +858,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;
@Parameter(names = { "-etb",
"--get-earliest-time-in-backlog" }, description = "Set true to
get earliest time in backlog")
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 8eb77e981a8..90b1e24f3c1 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 entries 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. */