zentol commented on a change in pull request #13027:
URL: https://github.com/apache/flink/pull/13027#discussion_r469080456
##########
File path:
flink-core/src/main/java/org/apache/flink/configuration/CoreOptions.java
##########
@@ -124,6 +124,15 @@
return parseParentFirstLoaderPatterns(base, append);
}
+ @Documentation.Section(Documentation.Sections.EXPERT_CLASS_LOADING)
+ public static final ConfigOption<Boolean> CHECK_LEAKED_CLASSLOADER =
ConfigOptions
+ .key("classloader.check_leaked_classloader")
Review comment:
we don't use underscores.
##########
File path:
flink-runtime/src/main/java/org/apache/flink/runtime/execution/librarycache/FlinkUserCodeClassLoaders.java
##########
@@ -136,7 +150,10 @@ public void close() {
private FlinkUserCodeClassLoader ensureInner() {
if (inner == null) {
- throw new IllegalStateException("Trying to
access closed classloader");
+ throw new IllegalStateException("Trying to
access closed classloader. Please check if you store " +
+ "classloaders directly or indirectly in
static fields. If the stacktrace suggests that the leak " +
+ "occurs in a third party library and
cannot be fixed immediately, you can disable this check " +
+ "with the configuration
'classloader.check_leaked_classloader'.");
Review comment:
Retrieve the key from the actual configuration object instead.
##########
File path:
flink-core/src/main/java/org/apache/flink/configuration/CoreOptions.java
##########
@@ -124,6 +124,15 @@
return parseParentFirstLoaderPatterns(base, append);
}
+ @Documentation.Section(Documentation.Sections.EXPERT_CLASS_LOADING)
+ public static final ConfigOption<Boolean> CHECK_LEAKED_CLASSLOADER =
ConfigOptions
+ .key("classloader.check_leaked_classloader")
+ .booleanType()
+ .defaultValue(true)
+ .withDescription("Fails if a user classloader is used in
another job after a job has been finished. This " +
+ "check should only be disabled if the class leak occurs
in an external library cannot be fixed " +
+ "immediately.");
Review comment:
```
Fails attempts at loading classes if the user classloader of a job is used
after it has terminated.
This is usually caused by the classloader being leaked by lingering threads
or misbehaving libraries, which may also result in the classloader being used
by other jobs.
This check should only be disabled if such a leak prevents further jobs from
running.
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]