This is an automated email from the ASF dual-hosted git repository.
daojun 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 667780cabcd [improve][admin] Expose per ledger props to
PersistentTopic.getInternalStats (#24336)
667780cabcd is described below
commit 667780cabcdec8fad4cfee63210aa9dbf5be4095
Author: 道君- Tao Jiuming <[email protected]>
AuthorDate: Sat May 24 16:49:12 2025 +0800
[improve][admin] Expose per ledger props to
PersistentTopic.getInternalStats (#24336)
---
.../apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java | 7 +++++++
.../pulsar/stats/client/PulsarBrokerStatsClientTest.java | 15 +++++++++++++++
.../common/policies/data/ManagedLedgerInternalStats.java | 1 +
3 files changed, 23 insertions(+)
diff --git
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
index bba40eccd39..cb7fb2658c4 100644
---
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
+++
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
@@ -4577,6 +4577,13 @@ public class ManagedLedgerImpl implements ManagedLedger,
CreateCallback {
}
}
}
+ if (li.getPropertiesCount() > 0) {
+ Map<String, String> properties = new
HashMap<>(li.getPropertiesCount());
+ for (MLDataFormats.KeyValue kv :
li.getPropertiesList()) {
+ properties.put(kv.getKey(), kv.getValue());
+ }
+ info.properties = properties;
+ }
stats.ledgers.add(info);
});
statFuture.complete(stats);
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/stats/client/PulsarBrokerStatsClientTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/stats/client/PulsarBrokerStatsClientTest.java
index 27b39f7c1ae..764cc50b49b 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/stats/client/PulsarBrokerStatsClientTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/stats/client/PulsarBrokerStatsClientTest.java
@@ -24,11 +24,13 @@ import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import java.net.URL;
+import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.ws.rs.ClientErrorException;
import javax.ws.rs.ServerErrorException;
import lombok.Cleanup;
+import org.apache.bookkeeper.mledger.ManagedLedger;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.admin.PulsarAdminException;
@@ -42,6 +44,7 @@ import org.apache.pulsar.client.api.Consumer;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.ProducerConsumerBase;
+import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats;
import
org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats.CursorStats;
import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats;
import org.slf4j.Logger;
@@ -123,12 +126,24 @@ public class PulsarBrokerStatsClientTest extends
ProducerConsumerBase {
}
PersistentTopic topic = (PersistentTopic)
pulsar.getBrokerService().getOrCreateTopic(topicName).get();
+ ManagedLedger ledger = topic.getManagedLedger();
+ long firstLedgerId = ledger.getLedgersInfo().firstKey();
+ ledger.asyncAddLedgerProperty(firstLedgerId, "foo", "bar").get();
+
PersistentTopicInternalStats internalStats =
topic.getInternalStats(true).get();
assertNotNull(internalStats.ledgers.get(0).metadata);
// For the mock test, the default ensembles is
["192.0.2.1:1234","192.0.2.2:1234","192.0.2.3:1234"]
// The registered bookie ID is 192.168.1.1:5000
assertTrue(internalStats.ledgers.get(0).underReplicated);
+ for (ManagedLedgerInternalStats.LedgerInfo ledgerInfo :
internalStats.ledgers) {
+ if (ledgerInfo.ledgerId == firstLedgerId) {
+ Map<String, String> properties = ledgerInfo.properties;
+ assertNotNull(properties);
+ assertEquals(properties.get("foo"), "bar");
+ }
+ }
+
CursorStats cursor = internalStats.cursors.get(subscriptionName);
assertTrue(cursor.active);
diff --git
a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java
b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java
index b68b6308c8f..87228fa3736 100644
---
a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java
+++
b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java
@@ -81,6 +81,7 @@ public class ManagedLedgerInternalStats {
public boolean offloaded;
public String metadata;
public boolean underReplicated;
+ public Map<String, String> properties;
}
/**