This is an automated email from the ASF dual-hosted git repository. penghui pushed a commit to branch branch-2.10 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 97dd4e0ba7c4d17d57ae3589e058a12fc53cea21 Author: Qiang Huang <[email protected]> AuthorDate: Fri Jul 1 10:27:40 2022 +0800 [fix][broker]fix bug: fail to expose managed ledger client stats to prometheus if bookkeeperClientExposeStatsToPrometheus is true (#16219) (cherry picked from commit f35228df2d0904e4dcdf4035af0504a517d540ec) --- .../pulsar/broker/ManagedLedgerClientFactory.java | 4 +-- .../pulsar/broker/stats/PrometheusMetricsTest.java | 32 +++++++++++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/ManagedLedgerClientFactory.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/ManagedLedgerClientFactory.java index f06679ece78..bb7cb6ffd8d 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/ManagedLedgerClientFactory.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/ManagedLedgerClientFactory.java @@ -83,7 +83,7 @@ public class ManagedLedgerClientFactory implements ManagedLedgerStorage { StatsLogger statsLogger = statsProvider.getStatsLogger("pulsar_managedLedger_client"); this.defaultBkClient = - bookkeeperProvider.create(conf, metadataStore, eventLoopGroup, Optional.empty(), null); + bookkeeperProvider.create(conf, metadataStore, eventLoopGroup, Optional.empty(), null, statsLogger); BookkeeperFactoryForCustomEnsemblePlacementPolicy bkFactory = ( EnsemblePlacementPolicyConfig ensemblePlacementPolicyConfig) -> { @@ -94,7 +94,7 @@ public class ManagedLedgerClientFactory implements ManagedLedgerStorage { try { return bookkeeperProvider.create(conf, metadataStore, eventLoopGroup, Optional.ofNullable(ensemblePlacementPolicyConfig.getPolicyClass()), - ensemblePlacementPolicyConfig.getProperties()); + ensemblePlacementPolicyConfig.getProperties(), statsLogger); } catch (Exception e) { log.error("Failed to initialize bk-client for policy {}, properties {}", ensemblePlacementPolicyConfig.getPolicyClass(), diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java index c4823c8b0e7..c6996aea0b7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java @@ -999,12 +999,42 @@ public class PrometheusMetricsTest extends BrokerTestBase { cm = (List<Metric>) metrics.get("pulsar_managedLedger_client_bookkeeper_ml_scheduler_total_tasks_0"); assertEquals(cm.size(), 1); assertEquals(cm.get(0).tags.get("cluster"), "test"); - cm = (List<Metric>) metrics.get("pulsar_managedLedger_client_bookkeeper_ml_workers_completed_tasks_0"); assertEquals(cm.size(), 0); cm = (List<Metric>) metrics.get("pulsar_managedLedger_client_bookkeeper_ml_workers_task_execution_count"); assertEquals(cm.size(), 0); + cm = (List<Metric>) metrics.get( + keyNameBySubstrings(metrics, "pulsar_managedLedger_client", "bookkeeper_ml_scheduler_total_tasks")); + assertEquals(cm.size(), 1); + assertEquals(cm.get(0).tags.get("cluster"), "test"); + + cm = (List<Metric>) metrics.get(keyNameBySubstrings(metrics, "pulsar_managedLedger_client", + "bookkeeper_ml_scheduler_task_execution_sum")); + assertEquals(cm.size(), 2); + assertEquals(cm.get(0).tags.get("cluster"), "test"); + + cm = (List<Metric>) metrics.get( + keyNameBySubstrings(metrics, + "pulsar_managedLedger_client", "bookkeeper_ml_scheduler_queue")); + assertEquals(cm.size(), 1); + assertEquals(cm.get(0).tags.get("cluster"), "test"); + } + + private static String keyNameBySubstrings(Multimap<String, Metric> metrics, String... substrings) { + for (String key : metrics.keys()) { + boolean found = true; + for (String s : substrings) { + if (!key.contains(s)) { + found = false; + break; + } + } + if (found) { + return key; + } + } + return null; } @Test
