[ 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)