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);
}
}
};
}
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);
};
}
Aggregations