Skip to content

Commit bc859f3

Browse files
committed
reject empty labels
Signed-off-by: Gregor Zeitlinger <[email protected]>
1 parent c5b70bc commit bc859f3

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public static String validateMetricName(String name) {
121121
case LEGACY_VALIDATION:
122122
return validateLegacyMetricName(name);
123123
case UTF_8_VALIDATION:
124-
if (name.isEmpty() || !StandardCharsets.UTF_8.newEncoder().canEncode(name)) {
124+
if (!isValidUtf8(name)) {
125125
return "The metric name contains unsupported characters";
126126
}
127127
return null;
@@ -165,13 +165,17 @@ public static boolean isValidLabelName(String name) {
165165
case LEGACY_VALIDATION:
166166
return isValidLegacyLabelName(name);
167167
case UTF_8_VALIDATION:
168-
return StandardCharsets.UTF_8.newEncoder().canEncode(name);
168+
return isValidUtf8(name);
169169
default:
170170
throw new RuntimeException(
171171
"Invalid name validation scheme requested: " + getValidationScheme());
172172
}
173173
}
174174

175+
private static boolean isValidUtf8(String name) {
176+
return !name.isEmpty() && StandardCharsets.UTF_8.newEncoder().canEncode(name);
177+
}
178+
175179
public static boolean isValidLegacyLabelName(String name) {
176180
return LEGACY_LABEL_NAME_PATTERN.matcher(name).matches()
177181
&& !(name.startsWith("__")

prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,7 @@ public void testLabelNameIsValidUtf8(
126126
String labelName, boolean legacyValid, boolean utf8Valid, boolean legacyCharsetValid) {
127127
PrometheusNaming.resetForTest();
128128
assertMetricName(labelName, utf8Valid);
129-
// for some reason, an empty label name is considered valid in UTF-8 validation
130-
assertLabelName(labelName, utf8Valid || labelName.isEmpty());
129+
assertLabelName(labelName, utf8Valid);
131130
}
132131

133132
@SuppressWarnings("unused")

0 commit comments

Comments
 (0)