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


---

Reply via email to