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

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

Github user zentol commented on the issue:

    https://github.com/apache/flink/pull/5501
  
    Yeah I'm not happy that we now added another instanceof clause.
    
    Ultimately we could modify `Counter` and `Meter` to implement `NumberGauge` 
(returning the count and rate, respectively), but that still leaves us with 3 
metric types (StringGauge, NumberGauge, Histogram).
    (Long-term i would still like to throw out StringGauges, or force reporters 
to implement a dedicated interface)
    
    We could also hide histograms behind a series of `NumberGauges`, but it is 
difficult to ensure that all gauges refer to the same `HistogramStatistics`, 
i.e. are consistent as a whole, as they do currently.
    
    I didn't do anything in that regard in this PR as it would change behavior 
of some reporters that try to map our types to whatever types the backend uses. 
But this is very problematic anyway as our metric types are mostly syntactic 
sugar; the choice between counter/gauge is rather arbitrary.



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