[ 
https://issues.apache.org/jira/browse/FLINK-6053?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16391201#comment-16391201
 ] 

ASF GitHub Bot commented on FLINK-6053:
---------------------------------------

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


> Gauge<T> should only take subclasses of Number, rather than everything
> ----------------------------------------------------------------------
>
>                 Key: FLINK-6053
>                 URL: https://issues.apache.org/jira/browse/FLINK-6053
>             Project: Flink
>          Issue Type: Improvement
>          Components: Metrics
>    Affects Versions: 1.2.0
>            Reporter: Bowen Li
>            Assignee: Chesnay Schepler
>            Priority: Major
>             Fix For: 1.6.0
>
>
> Currently, Flink's Gauge is defined as 
> ```java
> public interface Gauge<T> extends Metric {
>       T getValue();
> }
> ```
> But it doesn't make sense to have Gauge take generic types other than Number. 
> And it blocks I from finishing FLINK-6013, because I cannot assume Gauge is 
> only about Number. So the class should be like
> ```java
> public interface Gauge<T extends Number> extends Metric {
>       T getValue();
> }
> ```



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to