You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Chesnay Schepler (JIRA)" <ji...@apache.org> on 2019/01/23 10:22:00 UTC

[jira] [Updated] (FLINK-11413) Reporter filtering using "metrics.reporters" broken on Java 9+

     [ https://issues.apache.org/jira/browse/FLINK-11413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chesnay Schepler updated FLINK-11413:
-------------------------------------
    Summary: Reporter filtering using "metrics.reporters" broken on Java 9+  (was: MetricReporter: "metrics.reporters" configuration has to be provided for reporters to be taken into account)

> Reporter filtering using "metrics.reporters" broken on Java 9+
> --------------------------------------------------------------
>
>                 Key: FLINK-11413
>                 URL: https://issues.apache.org/jira/browse/FLINK-11413
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Configuration, Metrics
>    Affects Versions: 1.6.3, 1.7.1
>            Reporter: Matthieu Bonneviot
>            Priority: Minor
>
> When using java 11, "metrics.reporters" configuration has to be provided for reporters to be taken into account.
>  
> The desired behavior:
> The MetricRegistryConfiguration looks for a conf like "metrics.reporters = foo,bar", if not found: all reporters that could be found in the configuration will be started.
>  
> In the code is it done bySet<String> includedReporters = reporterListPattern.splitAsStream(includedReportersString).collect(Collectors.toSet());
> [https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/metrics/MetricRegistryConfiguration.java#L134]
>  Definition of splitAsStream: If this pattern does not match any subsequence of the input then the resulting stream has just one element, namely the input sequence in string form.
> It means  reporterListPattern.splitAsStream("") should return "" and so includedReporters should have size 1 with "" as unique element
> However there is a misbehavior in some version of java 8, it does return empty stream.
> But working with java 11, the further code does not work: if (includedReporters.isEmpty() || includedReporters.contains(reporterName))
> [https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/metrics/MetricRegistryConfiguration.java#L145]
> I would suggest to filter empty string:
> Set<String> includedReporters = reporterListPattern.splitAsStream(includedReportersString).*filter(s -> !s.isEmpty())*.collect(Collectors.toSet());



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)