Class ClientWrapperClassLoader

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    @Experimental
    @Internal
    public class ClientWrapperClassLoader
    extends org.apache.flink.util.FlinkUserCodeClassLoaders.SafetyNetWrapperClassLoader
    This class loader extends FlinkUserCodeClassLoaders.SafetyNetWrapperClassLoader, upon the addURL method, it also exposes a removeURL method which used to remove unnecessary jar from current classloader path. This class loader wraps a FlinkUserCodeClassLoader and an old classloader list, the class load is delegated to the inner FlinkUserCodeClassLoader.

    This is only used to SqlClient for supporting REMOVE JAR clause currently. When remove a jar, get the registered jar url list from current FlinkUserCodeClassLoader firstly, then create a new instance of FlinkUserCodeClassLoader which urls doesn't include the removed jar, and the currentClassLoader point to new instance object, the old object is added to list to be closed when close ClientWrapperClassLoader.

    Note: This classloader is not guaranteed to actually remove class or resource, any classes or resources in the removed jar that are already loaded, are still accessible.

    • Constructor Detail

      • ClientWrapperClassLoader

        public ClientWrapperClassLoader​(org.apache.flink.util.FlinkUserCodeClassLoader inner,
                                        org.apache.flink.configuration.Configuration configuration)
    • Method Detail

      • removeURL

        public void removeURL​(URL url)
      • close

        public void close()
        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Overrides:
        close in class org.apache.flink.util.FlinkUserCodeClassLoaders.SafetyNetWrapperClassLoader