[
https://issues.apache.org/jira/browse/FLINK-6053?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15926561#comment-15926561
]
Chesnay Schepler commented on FLINK-6053:
-----------------------------------------
I can see the merit and would be in favor of doing that; i do consider the
current Gauge definition a mistake. But we would first need a plan on what to
do with the existing metrics that rely on the current interface.
What we could right now though is the following:
Step 1:
Add a new class:
{code:java}
class NumberGauge extends Gauge<Number> {
}
{code}
Step 2:
Migrate all existing gauges that return numbers to this class.
Step 3:
You can now check for instanceof NumberGauge in the reporter, similar to other
metrics. Since we have to make instanceof checks anyway (because FLINK-5095 is
still open)
this shouldn't be soooo terrible.
This does not break the API since all reporters that are unaware of this new
type will simply handle it as a gauge.
Note that a reporter that wants to use this must not extend AbstractReporter
since we can't change that class to account for this new type.
> 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
> Fix For: 2.0.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
(v6.3.15#6346)