Github user StephanEwen commented on a diff in the pull request:
https://github.com/apache/flink/pull/4891#discussion_r146338877
--- Diff: docs/monitoring/debugging_classloading.md ---
@@ -57,22 +57,34 @@ YARN classloading differs between single job
deployments and sessions:
**Mesos**
-Mesos setups following [this documentation](../ops/deployment/mesos.html)
currently behave very much like the a
+Mesos setups following [this documentation](../ops/deployment/mesos.html)
currently behave very much like the a
YARN session: The TaskManager and JobManager processes are started with
the Flink framework classes in classpath, job
classes are loaded dynamically when the jobs are submitted.
+## Configuring ClassLoader Resolution Order
+
+Flink uses a hierarchy of ClassLoaders for loading classes from the
user-code jar(s). The user-code
+ClassLoader has a reference to the parent ClassLoader, which is the
default Java ClassLoader in most
+cases. By default, Java ClassLoaders will first look for classes in the
parent ClassLoader and then in
+the child ClassLoader for cases where we have a hierarchy of ClassLoaders.
This is problematic if you
+have in your user jar a version of a library that conflicts with a version
that comes with Flink. You can
+change this behaviour by configuring the ClassLoader resolution order via
+`classloader.resolve-order: child-first` in the Flink config. However,
Flink classes will still
+be resolved through the parent ClassLoader first, altough you can also
configure this via
+`classloader.always-parent-first-patterns`, which is `org.apache.flink`,
by default.
--- End diff --
change `always-parent-first-patterns` to `parent-first-patterns`?
---