Search in sources :

Example 1 with NOOP_EXCEPTION_HANDLER

use of org.apache.flink.util.FlinkUserCodeClassLoader.NOOP_EXCEPTION_HANDLER in project plugins by qlangtech.

the class TISFlinClassLoaderFactory method buildServerLoaderFactory.

@Override
public BlobLibraryCacheManager.ClassLoaderFactory buildServerLoaderFactory(FlinkUserCodeClassLoaders.ResolveOrder classLoaderResolveOrder, String[] alwaysParentFirstPatterns, @Nullable Consumer<Throwable> exceptionHander, boolean checkClassLoaderLeak) {
    if (Boolean.getBoolean(SKIP_CLASSLOADER_FACTORY_CREATION)) {
        return (urls) -> FlinkUserCodeClassLoaders.create(classLoaderResolveOrder, urls, TISFlinClassLoaderFactory.class.getClassLoader(), alwaysParentFirstPatterns, NOOP_EXCEPTION_HANDLER, checkClassLoaderLeak);
    }
    this.makeDataDirUseable();
    logger.info("buildServerLoader classLoaderResolveOrder:{}", classLoaderResolveOrder);
    return new BlobLibraryCacheManager.DefaultClassLoaderFactory(classLoaderResolveOrder, alwaysParentFirstPatterns, exceptionHander, checkClassLoaderLeak) {

        @Override
        public URLClassLoader createClassLoader(URL[] libraryURLs) {
            try {
                String appName = getTisAppName(libraryURLs);
                logger.info("start createClassLoader of app:" + appName);
                TIS.clean();
                synchronizeIncrPluginsFromRemoteRepository(appName);
                PluginManager pluginManager = TIS.get().getPluginManager();
                return new TISChildFirstClassLoader(pluginManager.uberClassLoader, libraryURLs, this.getParentClassLoader(), this.alwaysParentFirstPatterns, this.classLoadingExceptionHandler);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    };
}
Also used : Manifest(java.util.jar.Manifest) ComponentMeta(com.qlangtech.tis.plugin.ComponentMeta) URL(java.net.URL) TIS(com.qlangtech.tis.TIS) LoggerFactory(org.slf4j.LoggerFactory) BlobLibraryCacheManager(org.apache.flink.runtime.execution.librarycache.BlobLibraryCacheManager) NOOP_EXCEPTION_HANDLER(org.apache.flink.util.FlinkUserCodeClassLoader.NOOP_EXCEPTION_HANDLER) StringUtils(org.apache.commons.lang3.StringUtils) Config(com.qlangtech.tis.manage.common.Config) URLClassLoader(java.net.URLClassLoader) Lists(com.google.common.collect.Lists) CenterResource(com.qlangtech.tis.manage.common.CenterResource) Map(java.util.Map) JarInputStream(java.util.jar.JarInputStream) MQListenerFactory(com.qlangtech.tis.async.message.client.consumer.impl.MQListenerFactory) KeyedPluginStore(com.qlangtech.tis.plugin.KeyedPluginStore) Nullable(javax.annotation.Nullable) TISSinkFactory(com.qlangtech.tis.plugin.incr.TISSinkFactory) IncrStreamFactory(com.qlangtech.tis.plugin.incr.IncrStreamFactory) ClassLoaderFactoryBuilder(org.apache.flink.runtime.execution.librarycache.ClassLoaderFactoryBuilder) Logger(org.slf4j.Logger) FlinkUserCodeClassLoaders(org.apache.flink.runtime.execution.librarycache.FlinkUserCodeClassLoaders) FileUtils(org.apache.commons.io.FileUtils) IOException(java.io.IOException) PluginManager(com.qlangtech.tis.extension.PluginManager) Attributes(java.util.jar.Attributes) Consumer(java.util.function.Consumer) List(java.util.List) IRepositoryResource(com.qlangtech.tis.plugin.IRepositoryResource) PluginManager(com.qlangtech.tis.extension.PluginManager) IOException(java.io.IOException)

Example 2 with NOOP_EXCEPTION_HANDLER

use of org.apache.flink.util.FlinkUserCodeClassLoader.NOOP_EXCEPTION_HANDLER in project plugins by qlangtech.

the class TISFlinClassLoaderFactory method buildClientLoaderFactory.

// public static void main(String[] args) throws Exception {
// File f = new File("/opt/data/tis/cfg_repo/streamscript/mysql_elastic/20210629113249/mysql_elastic-inc.jar");
// try (JarInputStream jarReader = new JarInputStream(FileUtils.openInputStream(f))) {
// Manifest manifest = jarReader.getManifest();
// Attributes pluginInventory = manifest.getAttributes("plugin_inventory");
// if (pluginInventory == null) {
// throw new IllegalStateException("plugin inventory can not be empty in lib:" + f);
// }
// for (Map.Entry<Object, Object> pluginDesc : pluginInventory.entrySet()) {
// //  pluginManager.dynamicLoadPlugin(String.valueOf(pluginDesc.getKey()));
// }
// }
// }
@Override
public BlobLibraryCacheManager.ClassLoaderFactory buildClientLoaderFactory(FlinkUserCodeClassLoaders.ResolveOrder classLoaderResolveOrder, String[] alwaysParentFirstPatterns, @Nullable Consumer<Throwable> exceptionHander, boolean checkClassLoaderLeak) {
    this.makeDataDirUseable();
    ClassLoader parentClassLoader = TIS.get().getPluginManager().uberClassLoader;
    return (libraryURLs) -> {
        return FlinkUserCodeClassLoaders.create(classLoaderResolveOrder, libraryURLs, parentClassLoader, alwaysParentFirstPatterns, NOOP_EXCEPTION_HANDLER, checkClassLoaderLeak);
    };
}
Also used : Manifest(java.util.jar.Manifest) ComponentMeta(com.qlangtech.tis.plugin.ComponentMeta) URL(java.net.URL) TIS(com.qlangtech.tis.TIS) LoggerFactory(org.slf4j.LoggerFactory) BlobLibraryCacheManager(org.apache.flink.runtime.execution.librarycache.BlobLibraryCacheManager) NOOP_EXCEPTION_HANDLER(org.apache.flink.util.FlinkUserCodeClassLoader.NOOP_EXCEPTION_HANDLER) StringUtils(org.apache.commons.lang3.StringUtils) Config(com.qlangtech.tis.manage.common.Config) URLClassLoader(java.net.URLClassLoader) Lists(com.google.common.collect.Lists) CenterResource(com.qlangtech.tis.manage.common.CenterResource) Map(java.util.Map) JarInputStream(java.util.jar.JarInputStream) MQListenerFactory(com.qlangtech.tis.async.message.client.consumer.impl.MQListenerFactory) KeyedPluginStore(com.qlangtech.tis.plugin.KeyedPluginStore) Nullable(javax.annotation.Nullable) TISSinkFactory(com.qlangtech.tis.plugin.incr.TISSinkFactory) IncrStreamFactory(com.qlangtech.tis.plugin.incr.IncrStreamFactory) ClassLoaderFactoryBuilder(org.apache.flink.runtime.execution.librarycache.ClassLoaderFactoryBuilder) Logger(org.slf4j.Logger) FlinkUserCodeClassLoaders(org.apache.flink.runtime.execution.librarycache.FlinkUserCodeClassLoaders) FileUtils(org.apache.commons.io.FileUtils) IOException(java.io.IOException) PluginManager(com.qlangtech.tis.extension.PluginManager) Attributes(java.util.jar.Attributes) Consumer(java.util.function.Consumer) List(java.util.List) IRepositoryResource(com.qlangtech.tis.plugin.IRepositoryResource) URLClassLoader(java.net.URLClassLoader)

Aggregations

Lists (com.google.common.collect.Lists)2 TIS (com.qlangtech.tis.TIS)2 MQListenerFactory (com.qlangtech.tis.async.message.client.consumer.impl.MQListenerFactory)2 PluginManager (com.qlangtech.tis.extension.PluginManager)2 CenterResource (com.qlangtech.tis.manage.common.CenterResource)2 Config (com.qlangtech.tis.manage.common.Config)2 ComponentMeta (com.qlangtech.tis.plugin.ComponentMeta)2 IRepositoryResource (com.qlangtech.tis.plugin.IRepositoryResource)2 KeyedPluginStore (com.qlangtech.tis.plugin.KeyedPluginStore)2 IncrStreamFactory (com.qlangtech.tis.plugin.incr.IncrStreamFactory)2 TISSinkFactory (com.qlangtech.tis.plugin.incr.TISSinkFactory)2 IOException (java.io.IOException)2 URL (java.net.URL)2 URLClassLoader (java.net.URLClassLoader)2 List (java.util.List)2 Map (java.util.Map)2 Consumer (java.util.function.Consumer)2 Attributes (java.util.jar.Attributes)2 JarInputStream (java.util.jar.JarInputStream)2 Manifest (java.util.jar.Manifest)2