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

jbonofre pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/karaf-decanter.git


The following commit(s) were added to refs/heads/main by this push:
     new 7144b0f5 [collector] Prometheus - label values could have bracket - 
Fix #553 (#554)
7144b0f5 is described below

commit 7144b0f561297f2223d92fac9c9efd63cf0e1676
Author: François Papon <[email protected]>
AuthorDate: Fri Oct 17 14:37:53 2025 +0200

    [collector] Prometheus - label values could have bracket - Fix #553 (#554)
---
 .../collector/prometheus/PrometheusCollector.java       | 17 ++++++++++++-----
 .../collector/prometheus/PrometheusCollectorTest.java   |  2 +-
 collector/prometheus/src/test/resources/sample.txt      |  2 +-
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git 
a/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
 
b/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
index 7563c5dd..73385ad1 100644
--- 
a/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
+++ 
b/collector/prometheus/src/main/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollector.java
@@ -83,14 +83,21 @@ public class PrometheusCollector implements Runnable {
                         data.put("type", type);
                         if (line.contains("{")) {
                             final String name = line.substring(0, 
line.indexOf("{"));
-                            String[] labels = 
line.substring(line.indexOf("{")+1, line.indexOf("}")).split(",");
+                            String[] labels = 
line.substring(line.indexOf("{")+1, line.lastIndexOf("}")).split(",");
                             Stream.of(labels).forEach(it -> {
-                                String labelName = it.substring(0, 
it.indexOf("=")).replace("\"", "");
-                                String labelValue = 
it.substring(it.indexOf("=")+1).replace("\"", "");
-                                data.put(labelName, labelValue);
+                                try {
+                                    // we don't want to store label without 
value
+                                    if (it.contains("=")) {
+                                        String labelName = it.substring(0, 
it.indexOf("=")).replace("\"", "");
+                                        String labelValue = 
it.substring(it.indexOf("=") + 1).replace("\"", "");
+                                        data.put(labelName, labelValue);
+                                    }
+                                } catch (Exception e) {
+                                    LOGGER.error("[collector-prometheus] error 
while parsing label {} :: {}",it, e.getMessage());
+                                }
                             });
 
-                            String value = line.substring(line.indexOf("}")+2);
+                            String value = 
line.substring(line.lastIndexOf("}")+2);
                             Double parseValue = Double.parseDouble(value);
                             data.put(name, parseValue);
                         } else {
diff --git 
a/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
 
b/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
index 551baa49..aa51e144 100644
--- 
a/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
+++ 
b/collector/prometheus/src/test/java/org/apache/karaf/decanter/collector/prometheus/PrometheusCollectorTest.java
@@ -47,7 +47,7 @@ public class PrometheusCollectorTest {
         Assert.assertEquals("prometheus", 
dispatcher.postedEvents.get(1).getProperty("type"));
 
         Assert.assertEquals(1.0, 
dispatcher.postedEvents.get(2).getProperty("request_time_total_seconds"));
-        Assert.assertEquals("/send", 
dispatcher.postedEvents.get(2).getProperty("endpoint"));
+        Assert.assertEquals("/send/{id}/time", 
dispatcher.postedEvents.get(2).getProperty("endpoint"));
         Assert.assertEquals("prometheus", 
dispatcher.postedEvents.get(2).getProperty("type"));
 
         Assert.assertEquals(2.2561752E7, 
dispatcher.postedEvents.get(3).getProperty("memoryPool_usage_bytes"));
diff --git a/collector/prometheus/src/test/resources/sample.txt 
b/collector/prometheus/src/test/resources/sample.txt
index 52662482..b8930206 100644
--- a/collector/prometheus/src/test/resources/sample.txt
+++ b/collector/prometheus/src/test/resources/sample.txt
@@ -6,7 +6,7 @@ Test1 0.0
 Test2 8.0
 # HELP request_time_total
 # TYPE request_time_total counter
-request_time_total_seconds{api="my-api",endpoint="/send",method="POST"} 1.0
+request_time_total_seconds{api="my-api",endpoint="/send/{id}/time",method="POST"}
 1.0
 # HELP memoryPool_usage_bytes Current usage of the memory pool
 # TYPE memoryPool_usage_bytes gauge
 memoryPool_usage_bytes{name="Compressed Class Space"} 2.2561752E7

Reply via email to