Github user zentol commented on the issue:

    https://github.com/apache/flink/pull/5501
  
    They are not registered twice. For gauges we create Wrapper that would, for 
a `Gauge<Custom>`, implements both `Gauge<Custom>` and `StringGauge`.
    
    Legacy reporters would go through the Gauge interface and behave as they 
always did, reporter going through the `StringGauge` interface would stringify 
whatever the gauge returns.
    
    Similarly, the new gauge types are wrapped so that we register something 
that implements both `Gauge<String/Number>` and `String-/NumberGauge`.
    
    see `AbstractMetricGroup`:
    ```
        public <T, G extends Gauge<T>> G gauge(int name, G gauge) {
                return gauge(String.valueOf(name), gauge);
        }
    
        public <T, G extends Gauge<T>> G gauge(String name, G gauge) {
                addMetric(name, new LegacyGaugeWrapper<>(gauge));
                return gauge;
        }
    
        public void register(String name, StringGauge gauge) {
                addMetric(name, new StringGaugeWrapper(gauge));
        }
    
        @Override
        public void register(String name, NumberGauge gauge) {
                addMetric(name, new NumberGaugeWrapper(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();
                        if (value == null) {
                                return null;
                        } else {
                                return value.toString();
                        }
                }
    
                @Override
                public T getValue() {
                        return legacyGauge.getValue();
                }
        }
    ```



---

Reply via email to