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 registered by user. This classloader supports add and remove jar url from it, so can modify the url dynamically.

  2. Proposing an internal interface UserClassLoaderContextUserResourceManager, this entity performs bookkeeping of used/loaded resources. This entity should also provide a MutableURLClassLoader that which parent classloader inherits classloader  originated from the class loader given via EnvironmentSettings. UserClassLoaderContext UserResourceManager is responsible for manager all used resources.
  3. The table environment directly refers UserClassLoaderContext UserResourceManager instead of ClassLoader object, to ensure that when the ClassLoader object changes, the latest available ClassLoader can be obtainedmanager all jar resources get from related resource SQL syntax and add or remove the specific jar url to MutableURLClassLoader.
  4. FunctionCatalog also needs to refer UserResourceManager which is used to manager jar get from CREATE FUNCTION ... USING JAR syntax.

Migration Plan and Compatibility

...