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));
        }
+
 }

Reply via email to