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

Chia-Ping Tsai commented on KAFKA-19684:
----------------------------------------

the main benefit is to remove the type check from `KafkaMetric`

{code:java}
// before
    public Object metricValue() {
        long now = time.milliseconds();
        synchronized (this.lock) {
            if (isMeasurable())
                return ((Measurable) metricValueProvider).measure(config, now);
            else if (this.metricValueProvider instanceof Gauge)
                return ((Gauge<?>) metricValueProvider).value(config, now);
            else
                throw new IllegalStateException("Not a valid metric: " + 
this.metricValueProvider.getClass());
        }
    }
{code}


{code:java}
// after
    public Object metricValue() {
        long now = time.milliseconds();
        synchronized (this.lock) {
           return metricValueProvider.value(config, now);
        }
    }
{code}

Also, the following code could be removed

{code:java}
        if (!(valueProvider instanceof Measurable) && !(valueProvider 
instanceof Gauge))
            throw new IllegalArgumentException("Unsupported metric value 
provider of class " + valueProvider.getClass());
{code}


> Move Gauge#value to MetricValueProvider
> ---------------------------------------
>
>                 Key: KAFKA-19684
>                 URL: https://issues.apache.org/jira/browse/KAFKA-19684
>             Project: Kafka
>          Issue Type: Improvement
>            Reporter: Chia-Ping Tsai
>            Assignee: Chia-Ping Tsai
>            Priority: Minor
>              Labels: need-kip
>
> from: https://github.com/apache/kafka/pull/3705#discussion_r140830112



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to