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 17e77a0b1d19e..e5adfbe847c20 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 @@ -141,6 +141,12 @@ public double getDouble(String key, double defaultValue) { *
If the value is a {@link Boolean}, it is returned directly. Otherwise, the value's string * representation is parsed via {@link Boolean#parseBoolean(String)}. * + *
Note: values stored as {@link Number} (for example {@link Integer} values produced by a
+ * configuration parser) are not interpreted as numeric booleans. They are converted with {@link
+ * Object#toString()} first, so {@code 1} becomes the string {@code "1"}, which {@link
+ * Boolean#parseBoolean(String)} treats as {@code false} (only {@code "true"}, case-insensitive,
+ * is {@code true}).
+ *
* @param key the hashtable key.
* @param defaultValue a default value.
* @return the value in this property list with the specified key value as a boolean.
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 2824328c6a5cd..451e33e930d36 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
@@ -22,6 +22,7 @@
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
+import java.math.BigInteger;
import java.util.stream.Stream;
import static org.assertj.core.api.Assertions.assertThat;
@@ -78,12 +79,15 @@ private static Stream