[ https://issues.apache.org/jira/browse/FLINK-4563?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15529746#comment-15529746 ]
Anton Mushin commented on FLINK-4563: ------------------------------------- I am understand. I planning to fix this issue after merge https://github.com/apache/flink/pull/2517 or when PR will be accept. Now in AbstractMetricGroup#getMetricIdentifier() and for all calls getMetricIdentifier method scopeString once initialized. {code:java} public String getMetricIdentifier(String metricName, CharacterFilter filter) { if (scopeString == null) { if (filter != null) { scopeString = ScopeFormat.concat(filter, registry.getDelimiter(), scopeComponents); } else { scopeString = ScopeFormat.concat(registry.getDelimiter(), scopeComponents); } } if (filter != null) { return scopeString + registry.getDelimiter() + filter.filterCharacters(metricName); } else { return scopeString + registry.getDelimiter() + metricName; } } {code} Do I need save this "caching" of scopeString for different filters? It is variable using in 3 places class: 1 - in getMetricIdentifier() method 2 - in addGroup() method 3 - in addMetric() method For 2 and 3 cases 'scopeString' using for logging {code:title=Example} LOG.warn("Name collision: Adding a metric with the same name as a metric subgroup: '" + name + "'. Metric might not get properly reported. (" + scopeString + ')'); {code} As solution this issue I think what I can remove this variable from global scope and initialize it every time when call getMetric Identifier. But it is simple and most likely untrue solution. > [metrics] scope caching not adjusted for multiple reporters > ----------------------------------------------------------- > > Key: FLINK-4563 > URL: https://issues.apache.org/jira/browse/FLINK-4563 > Project: Flink > Issue Type: Bug > Components: Metrics > Affects Versions: 1.1.0 > Reporter: Chesnay Schepler > Assignee: Anton Mushin > > Every metric group contains a scope string, representing what entities > (job/task/etc.) a given metric belongs to, which is calculated on demand. > Before this string is cached a CharacterFilter is applied to it, which is > provided by the callee, usually a reporter. This was done since different > reporters have different requirements in regards to valid characters. The > filtered string is cached so that we don't have to refilter the string every > time. > This all works fine with a single reporter; with multiple however it is > completely broken as only the first filter is ever applied. -- This message was sent by Atlassian JIRA (v6.3.4#6332)