You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Chia-Ping Tsai (Jira)" <ji...@apache.org> on 2024/07/16 22:46:00 UTC

[jira] [Created] (KAFKA-17153) KafkaMetricsGroup#newGauge should accept functional interface instead of `com.yammer.metrics.core.Gague`

Chia-Ping Tsai created KAFKA-17153:
--------------------------------------

             Summary: KafkaMetricsGroup#newGauge should accept functional interface instead of `com.yammer.metrics.core.Gague`
                 Key: KAFKA-17153
                 URL: https://issues.apache.org/jira/browse/KAFKA-17153
             Project: Kafka
          Issue Type: Improvement
            Reporter: Chia-Ping Tsai
            Assignee: Chia-Ping Tsai


This is a kind of syntactic sugar. Java disallow lambdas to implement abstract classes, and hence there are many ugly impl of Gague in code base [0][1][2][3]. Those bad looking code will spring up as we migrate more and more scala code to java.

Hence, we should offer a variety to accept functional interface for java code. For example:

{code:java}
    public final <T> Gauge<T> newGauge(String name, Supplier<T> metric) {
        return newGauge(name, new Gauge<T>() {
            @Override
            public T value() {
                return metric.get();
            }
        }, Collections.emptyMap());
    }
{code}



[0] https://github.com/apache/kafka/blob/b015a83f6d286965af999c39c0902584fb6fb9de/server/src/main/java/org/apache/kafka/server/AssignmentsManager.java#L109
[1] https://github.com/apache/kafka/blob/b015a83f6d286965af999c39c0902584fb6fb9de/metadata/src/main/java/org/apache/kafka/image/loader/metrics/MetadataLoaderMetrics.java#L73
[2] https://github.com/apache/kafka/blob/b015a83f6d286965af999c39c0902584fb6fb9de/metadata/src/main/java/org/apache/kafka/controller/metrics/ControllerMetadataMetrics.java#L106
[3] https://github.com/apache/kafka/blob/b015a83f6d286965af999c39c0902584fb6fb9de/storage/src/main/java/org/apache/kafka/storage/internals/log/RemoteStorageThreadPool.java#L54



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