Github user StephanEwen commented on a diff in the pull request:
https://github.com/apache/flink/pull/5501#discussion_r173147513
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/metrics/groups/AbstractMetricGroup.java
---
@@ -460,4 +474,77 @@ protected GenericMetricGroup createChildGroup(String
name, ChildType childType)
VALUE,
GENERIC
}
+
+ /**
+ * This class wraps a legacy {@link Gauge} to ensure that legacy
metrics are not ignored by reporters that only work
+ * against the {@link StringGauge} and {@link NumberGauge} interfaces.
+ *
+ * @param <T> type of the gauge
+ */
+ private static class LegacyGaugeWrapper<T> implements StringGauge,
Gauge<T> {
+ private final Gauge<T> legacyGauge;
+
+ private LegacyGaugeWrapper(Gauge<T> legacyGauge) {
+ this.legacyGauge = legacyGauge;
+ }
+
+ @Override
+ public String getStringValue() {
+ T value = legacyGauge.getValue();
--- End diff --
Do we actually want/support Gauges that return null? Or should they return
"(null)", so that downstream code can assume non-null values?
If we always want non null values, you can use `return
String.valueOf(legacyGauge.getValue())`.
Otherwise, all methods should be annotated with `@Nullable`.
---