Fix metrics broken by comma and equal in labels

The logic for turning a key back into the labelles that defined it would
not account for the labels values possibly including a comma or equal
sign, which in turn broke the logic for handling these metrics.

Fix by properly parsing the keys.
This commit is contained in:
Hornwitser committed 2026-03-09 19:35:02 +01:00
1 parent b0595a6502
commit f6eb55163f
2 files changed
+30 -8

No files matched your search

+15 -2
View File
@@ -651,8 +651,21 @@ describe("lib/prometheus", function() {
let gauge = new prometheus.Gauge(
"test", "Help", { register: false, labels: ["a", "b"] }
);
gauge.labels('x\\\\\n\"\"\n\\', "2");
gauge.removeAll({ a: 'x\\\\\n\"\"\n\\' });
let labelValue = "";
for (let i = 0; i < 128; i++) {
const char = String.fromCodePoint(i);
if (!/[1-9B-Zb-z]/.test(char)) { // exclude boring characters
labelValue += char;
}
}
labelValue += "©💣";
gauge.labels(labelValue, "2");
gauge.removeAll({ a: labelValue });
assert(gauge._values.size === 0, "Matching labels remained");
gauge.labels("1", labelValue);
gauge.removeAll({ a: "1" });
assert(gauge._values.size === 0, "Matching labels remained");
});
});