Github user StephanEwen commented on a diff in the pull request:
https://github.com/apache/flink/pull/5544#discussion_r169660742
--- Diff:
flink-core/src/main/java/org/apache/flink/configuration/CoreOptions.java ---
@@ -86,11 +86,42 @@
* </ul>
*/
public static final ConfigOption<String> ALWAYS_PARENT_FIRST_LOADER =
ConfigOptions
- .key("classloader.parent-first-patterns")
+ .key("classloader.parent-first-patterns.base")
.defaultValue("java.;scala.;org.apache.flink.;com.esotericsoftware.kryo;org.apache.hadoop.;javax.annotation.;org.slf4j;org.apache.log4j;org.apache.logging.log4j;ch.qos.logback")
+ .withDeprecatedKeys("classloader.parent-first-patterns")
.withDescription("A (semicolon-separated) list of patterns that
specifies which classes should always be" +
" resolved through the parent ClassLoader first. A
pattern is a simple prefix that is checked against" +
- " the fully qualified class name.");
+ " the fully qualified class name. This setting should
generally not be modified. To add another pattern we" +
+ " recommend to use
\"classloader.parent-first-patterns.append\" instead.");
+
+ public static final ConfigOption<String>
ALWAYS_PARENT_FIRST_LOADER_APPEND = ConfigOptions
+ .key("classloader.parent-first-patterns.append")
+ .defaultValue("")
+ .withDescription("A (semicolon-separated) list of patterns that
specifies which classes should always be" +
+ " resolved through the parent ClassLoader first. A
pattern is a simple prefix that is checked against" +
+ " the fully qualified class name. These patterns are
appended to \"" + ALWAYS_PARENT_FIRST_LOADER.key() + "\".");
+
+ private static final String[] EMPTY_STRING_ARRAY = new String[0];
--- End diff --
This is meant well (as in fewer objects), but given that this is used only
once (or few times), the JVM has more overhead through this additional static
field (managing class and reflection metadata) than if the method
`getParentFirstLoaderPatterns()` just does a `new String[0]`, especially
because it will be a very short lived object.
---