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`.
---