[ 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)