Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Comprehensive consideration of the above, based on FLINK-15635, in this FLIP, the overall code design is as follows:

  1. Proposing a child first user class loader called MutableURLClassLoader which contains a parent classloader, child-first owner classloader and URL list registred by user. This classloader supports add and remove jar url from it, so can modify the url dynamically.

  2. Proposing an internal interface UserClassLoaderContext, this entity performs bookkeeping of used/loaded resources. This entity should also provide a UserClassLoader MutableURLClassLoader that parent classloader inherits from the class loader given via EnvironmentSettings. UserClassLoaderContext is responsible for manager all used resources.
  3. The table environment directly refers UserClassLoaderContext instead of ClassLoader object, to ensure that when the ClassLoader object changes, the latest available ClassLoader can be obtained.The objects which need use the custom ClassLoader such as DataTypeFactoryImpl currently hold UserClassLoaderContext directly in entire table module, instead of holding ClassLoader before.

Migration Plan and Compatibility

...