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

fanrui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 72d5997a3f2 [FLINK-38704][metrics] Fix MetricConfig.getString() to 
handle numeric values
72d5997a3f2 is described below

commit 72d5997a3f24974bc6d6701e9fcf49b75726017a
Author: MUKUL GUPTA <[email protected]>
AuthorDate: Tue Mar 10 11:50:10 2026 +0530

    [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.
---
 .../main/java/org/apache/flink/metrics/MetricConfig.java  | 15 ++++++++++++++-
 .../java/org/apache/flink/metrics/MetricConfigTest.java   |  9 ++++++++-
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git 
a/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MetricConfig.java
 
b/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MetricConfig.java
index b9fcafb5f2d..17e77a0b1d1 100644
--- 
a/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MetricConfig.java
+++ 
b/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MetricConfig.java
@@ -33,8 +33,21 @@ import java.util.Properties;
 @Public
 public class MetricConfig extends Properties {
 
+    /**
+     * Returns the value associated with the given key as a {@code String}.
+     *
+     * <p>If the value is not a {@link String}, its {@code toString()} 
representation is returned.
+     *
+     * @param key the hashtable key.
+     * @param defaultValue a default value.
+     * @return the value in this property list with the specified key value as 
a String.
+     */
     public String getString(String key, String defaultValue) {
-        return getProperty(key, defaultValue);
+        final Object value = get(key);
+        if (value == null) {
+            return defaultValue;
+        }
+        return value.toString();
     }
 
     /**
diff --git 
a/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MetricConfigTest.java
 
b/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MetricConfigTest.java
index d3be33d9663..2824328c6a5 100644
--- 
a/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MetricConfigTest.java
+++ 
b/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MetricConfigTest.java
@@ -90,7 +90,14 @@ class MetricConfigTest {
                         123456789012345L),
                 Arguments.of(3.14f, (TypedGetter) (c, k) -> c.getFloat(k, 
0.0f), 3.14f),
                 Arguments.of(2.718281828, (TypedGetter) (c, k) -> 
c.getDouble(k, 0.0), 2.718281828),
-                Arguments.of(true, (TypedGetter) (c, k) -> c.getBoolean(k, 
false), true));
+                Arguments.of(true, (TypedGetter) (c, k) -> c.getBoolean(k, 
false), true),
+                Arguments.of(42, (TypedGetter) (c, k) -> c.getString(k, 
"default"), "42"),
+                Arguments.of(
+                        123456789012345L,
+                        (TypedGetter) (c, k) -> c.getString(k, "default"),
+                        "123456789012345"),
+                Arguments.of(3.14f, (TypedGetter) (c, k) -> c.getString(k, 
"default"), "3.14"),
+                Arguments.of(true, (TypedGetter) (c, k) -> c.getString(k, 
"default"), "true"));
     }
 
     private static Stream<Arguments> crossTypeCases() {

Reply via email to