[jira] [Created] (FLINK-11413) MetricReporter: "metrics.reporters" configuration has to be provided for reporters to be taken into account

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-11413) MetricReporter: "metrics.reporters" configuration has to be provided for reporters to be taken into account

Shang Yuanchun (Jira)
Matthieu Bonneviot created FLINK-11413:
------------------------------------------

             Summary: MetricReporter: "metrics.reporters" configuration has to be provided for reporters to be taken into account
                 Key: FLINK-11413
                 URL: https://issues.apache.org/jira/browse/FLINK-11413
             Project: Flink
          Issue Type: Bug
          Components: Configuration
    Affects Versions: 1.7.1
            Reporter: Matthieu Bonneviot


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)