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

lhotari pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit a8586832f931da0c00603cf0a41e33d69d986c70
Author: Qiang Zhao <[email protected]>
AuthorDate: Mon Jun 2 03:50:24 2025 +0800

    [fix][broker] expose consumer name for partitioned topic stats (#24360)
    
    (cherry picked from commit 1c308710840e1f15d4421d429202fc6d212bf31a)
---
 .../apache/pulsar/broker/admin/AdminApi2Test.java  | 23 ++++++++++++++++++++++
 .../policies/data/stats/ConsumerStatsImpl.java     |  1 +
 2 files changed, 24 insertions(+)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
index 81f321e9a9c..f88898b921f 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
@@ -1869,6 +1869,29 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
 
     }
 
+
+    @Test
+    public void testPartitionedTopicStatsIncludeConsumerName() throws 
PulsarClientException, PulsarAdminException {
+        final String topic = "persistent://" + defaultNamespace + "/" + 
UUID.randomUUID();
+        admin.topics().createPartitionedTopic(topic, 2);
+        final String subName = "sub-name";
+        final String consumerName = "consumer-name";
+
+        @Cleanup
+        final PulsarClient client = 
PulsarClient.builder().serviceUrl(pulsar.getWebServiceAddress()).build();
+
+        @Cleanup
+        final Consumer<byte[]> consumer = client.newConsumer()
+                .topic(topic)
+                .subscriptionName(subName)
+                .consumerName(consumerName)
+                .subscribe();
+
+        final TopicStats topicStats = 
admin.topics().getPartitionedStats(topic, false);
+
+        
assertEquals(topicStats.getSubscriptions().get(subName).getConsumers().get(0).getConsumerName(),
 consumerName);
+    }
+
     @Test
     public void testPreciseBacklogForPartitionedTopic() throws 
PulsarClientException, PulsarAdminException {
         final String topic = "persistent://" + defaultNamespace + 
"/precise-back-log-for-partitioned-topic";
diff --git 
a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/ConsumerStatsImpl.java
 
b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/ConsumerStatsImpl.java
index 548abdc9ada..53428d254c1 100644
--- 
a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/ConsumerStatsImpl.java
+++ 
b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/stats/ConsumerStatsImpl.java
@@ -111,6 +111,7 @@ public class ConsumerStatsImpl implements ConsumerStats {
         this.unackedMessages += stats.unackedMessages;
         this.blockedConsumerOnUnackedMsgs = stats.blockedConsumerOnUnackedMsgs;
         this.readPositionWhenJoining = stats.readPositionWhenJoining;
+        this.consumerName = stats.consumerName;
         return this;
     }
 

Reply via email to