Skip to content

Commit 0d5ca17

Browse files
committed
[FLINK-38704][metrics] Fix MetricConfig.getString() to handle numeric values
MetricConfig.getString() was using getProperty() which returns null for numeric YAML values stored as Integer/Long/Boolean. Changed to use get() and convert to String, matching the pattern of other getter methods. This fixes metrics reporters not loading numeric configuration values.
1 parent 8833af4 commit 0d5ca17

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MetricConfig.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@
3434
public class MetricConfig extends Properties {
3535

3636
public String getString(String key, String defaultValue) {
37-
return getProperty(key, defaultValue);
37+
final Object value = get(key);
38+
if (value == null) {
39+
return defaultValue;
40+
}
41+
return value.toString();
3842
}
3943

4044
/**

flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MetricConfigTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,14 @@ private static Stream<Arguments> nativeTypeCases() {
9090
123456789012345L),
9191
Arguments.of(3.14f, (TypedGetter) (c, k) -> c.getFloat(k, 0.0f), 3.14f),
9292
Arguments.of(2.718281828, (TypedGetter) (c, k) -> c.getDouble(k, 0.0), 2.718281828),
93-
Arguments.of(true, (TypedGetter) (c, k) -> c.getBoolean(k, false), true));
93+
Arguments.of(true, (TypedGetter) (c, k) -> c.getBoolean(k, false), true),
94+
Arguments.of(42, (TypedGetter) (c, k) -> c.getString(k, "default"), "42"),
95+
Arguments.of(
96+
123456789012345L,
97+
(TypedGetter) (c, k) -> c.getString(k, "default"),
98+
"123456789012345"),
99+
Arguments.of(3.14f, (TypedGetter) (c, k) -> c.getString(k, "default"), "3.14"),
100+
Arguments.of(true, (TypedGetter) (c, k) -> c.getString(k, "default"), "true"));
94101
}
95102

96103
private static Stream<Arguments> crossTypeCases() {

0 commit comments

Comments
 (0)