[
https://issues.apache.org/jira/browse/KAFKA-13846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17566542#comment-17566542
]
Jose Armando Garcia Sancio commented on KAFKA-13846:
----------------------------------------------------
[~guozhang] [~sagarrao] The KIPs parent page has this KIP as targeting the
3.3.0 release. This issue is marked as open. Do you want me to remove this KIP
from the 3.3.0 release?
> Add an overloaded metricOrElseCreate function in Metrics
> --------------------------------------------------------
>
> Key: KAFKA-13846
> URL: https://issues.apache.org/jira/browse/KAFKA-13846
> Project: Kafka
> Issue Type: Improvement
> Components: metrics
> Reporter: Guozhang Wang
> Assignee: Sagar Rao
> Priority: Major
> Labels: newbie
>
> The `Metrics` registry is often used by concurrent threads, however it's
> get/create APIs are not well suited for it. A common pattern from the user
> today is:
> {code}
> metric = metrics.metric(metricName);
> if (metric == null) {
> try {
> metrics.createMetric(..)
> } catch (IllegalArgumentException e){
> // another thread may create the metric at the mean time
> }
> }
> {code}
> Otherwise the caller would need to synchronize the whole block trying to get
> the metric. However, the `createMetric` function call itself indeed
> synchronize internally on updating the metric map.
> So we could consider adding a metricOrElseCreate function which is similar to
> createMetric, but instead of throwing an illegal argument exception within
> the internal synchronization block, it would just return the already existing
> metric.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)