This is an automated email from the ASF dual-hosted git repository. zhijiang pushed a commit to branch release-1.10 in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/release-1.10 by this push: new aa37c0c [FLINK-15355][plugins] Fixed parsing of plugin parent-first patterns. aa37c0c is described below commit aa37c0cd89053e68e72a19d51715b3a31b74163c Author: Arvid Heise <ar...@ververica.com> AuthorDate: Thu Jan 9 14:39:16 2020 +0100 [FLINK-15355][plugins] Fixed parsing of plugin parent-first patterns. Previously, empty options would result in an empty pattern, which matches everything. Thus, we effectively got parent first for all classes. --- .../apache/flink/configuration/CoreOptions.java | 21 +++++------- .../flink/configuration/CoreOptionsTest.java | 39 ++++++++++++++++------ 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/flink-core/src/main/java/org/apache/flink/configuration/CoreOptions.java b/flink-core/src/main/java/org/apache/flink/configuration/CoreOptions.java index f852b0e..d29afdd 100644 --- a/flink-core/src/main/java/org/apache/flink/configuration/CoreOptions.java +++ b/flink-core/src/main/java/org/apache/flink/configuration/CoreOptions.java @@ -23,7 +23,9 @@ import org.apache.flink.annotation.docs.ConfigGroup; import org.apache.flink.annotation.docs.ConfigGroups; import org.apache.flink.annotation.docs.Documentation; import org.apache.flink.configuration.description.Description; -import org.apache.flink.util.ArrayUtils; + +import org.apache.flink.shaded.guava18.com.google.common.base.Splitter; +import org.apache.flink.shaded.guava18.com.google.common.collect.Iterables; import static org.apache.flink.configuration.ConfigOptions.key; @@ -109,16 +111,7 @@ public class CoreOptions { public static String[] getParentFirstLoaderPatterns(Configuration config) { String base = config.getString(ALWAYS_PARENT_FIRST_LOADER_PATTERNS); String append = config.getString(ALWAYS_PARENT_FIRST_LOADER_PATTERNS_ADDITIONAL); - - String[] basePatterns = base.isEmpty() - ? new String[0] - : base.split(";"); - - if (append.isEmpty()) { - return basePatterns; - } else { - return ArrayUtils.concat(basePatterns, append.split(";")); - } + return parseParentFirstLoaderPatterns(base, append); } /** @@ -147,8 +140,12 @@ public class CoreOptions { public static String[] getPluginParentFirstLoaderPatterns(Configuration config) { String base = config.getString(PLUGIN_ALWAYS_PARENT_FIRST_LOADER_PATTERNS); String append = config.getString(PLUGIN_ALWAYS_PARENT_FIRST_LOADER_PATTERNS_ADDITIONAL); + return parseParentFirstLoaderPatterns(base, append); + } - return ArrayUtils.concat(base.split(";"), append.split(";")); + private static String[] parseParentFirstLoaderPatterns(String base, String append) { + Splitter splitter = Splitter.on(';').omitEmptyStrings(); + return Iterables.toArray(Iterables.concat(splitter.split(base), splitter.split(append)), String.class); } // ------------------------------------------------------------------------ diff --git a/flink-core/src/test/java/org/apache/flink/configuration/CoreOptionsTest.java b/flink-core/src/test/java/org/apache/flink/configuration/CoreOptionsTest.java index 0bc5910..b0fd048 100644 --- a/flink-core/src/test/java/org/apache/flink/configuration/CoreOptionsTest.java +++ b/flink-core/src/test/java/org/apache/flink/configuration/CoreOptionsTest.java @@ -21,34 +21,53 @@ package org.apache.flink.configuration; import org.junit.Assert; import org.junit.Test; +import java.util.function.Function; + /** * Tests for {@link CoreOptions}. */ public class CoreOptionsTest { @Test public void testGetParentFirstLoaderPatterns() { - Configuration config = new Configuration(); + testParentFirst( + CoreOptions::getParentFirstLoaderPatterns, + CoreOptions.ALWAYS_PARENT_FIRST_LOADER_PATTERNS, + CoreOptions.ALWAYS_PARENT_FIRST_LOADER_PATTERNS_ADDITIONAL); + } - Assert.assertArrayEquals( - CoreOptions.ALWAYS_PARENT_FIRST_LOADER_PATTERNS.defaultValue().split(";"), - CoreOptions.getParentFirstLoaderPatterns(config)); + @Test + public void testGetPluginParentFirstLoaderPatterns() { + testParentFirst( + CoreOptions::getPluginParentFirstLoaderPatterns, + CoreOptions.PLUGIN_ALWAYS_PARENT_FIRST_LOADER_PATTERNS, + CoreOptions.PLUGIN_ALWAYS_PARENT_FIRST_LOADER_PATTERNS_ADDITIONAL); + } + + private void testParentFirst( + Function<Configuration, String[]> patternGetter, + ConfigOption<String> patternOption, + ConfigOption<String> additionalOption) { + Configuration config = new Configuration(); + Assert.assertArrayEquals(patternOption.defaultValue().split(";"), + patternGetter.apply(config)); - config.setString(CoreOptions.ALWAYS_PARENT_FIRST_LOADER_PATTERNS, "hello;world"); + config.setString(patternOption, "hello;world"); Assert.assertArrayEquals( "hello;world".split(";"), - CoreOptions.getParentFirstLoaderPatterns(config)); + patternGetter.apply(config)); - config.setString(CoreOptions.ALWAYS_PARENT_FIRST_LOADER_PATTERNS_ADDITIONAL, "how;are;you"); + config.setString(additionalOption, "how;are;you"); Assert.assertArrayEquals( "hello;world;how;are;you".split(";"), - CoreOptions.getParentFirstLoaderPatterns(config)); + patternGetter.apply(config)); - config.setString(CoreOptions.ALWAYS_PARENT_FIRST_LOADER_PATTERNS, ""); + config.setString(patternOption, ""); Assert.assertArrayEquals( "how;are;you".split(";"), - CoreOptions.getParentFirstLoaderPatterns(config)); + patternGetter.apply(config)); } + }