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