You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Anton Mushin (JIRA)" <ji...@apache.org> on 2016/09/29 09:55:20 UTC

[jira] [Comment Edited] (FLINK-4563) [metrics] scope caching not adjusted for multiple reporters

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

Anton Mushin edited comment on FLINK-4563 at 9/29/16 9:54 AM:
--------------------------------------------------------------

Ok this case if we get f1 in method we must return cached scopeString else for other filters we are create and return new scopeString.
code is for example, is it correct idea?
{code:java}
private String scopeString;
private CharacterFilter firstFilter;
public String getMetricIdentifier(String metricName, CharacterFilter filter) {
		if (firstFilter == null && filter != null) {
			firstFilter = filter;
			scopeString = ScopeFormat.concat(firstFilter, registry.getDelimiter(), scopeComponents);
			return scopeString + registry.getDelimiter() + filter.filterCharacters(metricName);
		}
		if (filter != null) {
			if (firstFilter.equals(filter)) {
				 return scopeString + registry.getDelimiter() + filter.filterCharacters(metricName);
			} else {
				String newScopeString = ScopeFormat.concat(filter, registry.getDelimiter(), scopeComponents);
				return newScopeString + registry.getDelimiter() + filter.filterCharacters(metricName);
			}
		} else {
			String newScopeString = ScopeFormat.concat(registry.getDelimiter(), scopeComponents);
			return newScopeString + registry.getDelimiter() + metricName;
		}
	}
{code}


was (Author: anmu):
Ok this case if we get f1 in method we must return cached scopeString else for other filters we are create and return new scopeString.
code is for example, is it correct code?
{code:java}
private String scopeString;
private CharacterFilter firstFilter;
public String getMetricIdentifier(String metricName, CharacterFilter filter) {
		if (firstFilter == null && filter != null) {
			firstFilter = filter;
			scopeString = ScopeFormat.concat(firstFilter, registry.getDelimiter(), scopeComponents);
			return scopeString + registry.getDelimiter() + filter.filterCharacters(metricName);
		}
		if (filter != null) {
			if (firstFilter.equals(filter)) {
				 return scopeString + registry.getDelimiter() + filter.filterCharacters(metricName);
			} else {
				String newScopeString = ScopeFormat.concat(filter, registry.getDelimiter(), scopeComponents);
				return newScopeString + registry.getDelimiter() + filter.filterCharacters(metricName);
			}
		} else {
			String newScopeString = ScopeFormat.concat(registry.getDelimiter(), scopeComponents);
			return newScopeString + registry.getDelimiter() + metricName;
		}
	}
{code}

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