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`?
---