You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by he...@apache.org on 2022/06/10 07:07:39 UTC
[incubator-inlong] branch master updated: [INLONG-4615][Manager] PluginClassLoader adapts to the Windows system (#4617)
This is an automated email from the ASF dual-hosted git repository.
healchow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git
The following commit(s) were added to refs/heads/master by this push:
new d86ca738f [INLONG-4615][Manager] PluginClassLoader adapts to the Windows system (#4617)
d86ca738f is described below
commit d86ca738f29b1094cad4638224d8cdc3398af082
Author: kipshi <48...@users.noreply.github.com>
AuthorDate: Fri Jun 10 15:07:34 2022 +0800
[INLONG-4615][Manager] PluginClassLoader adapts to the Windows system (#4617)
---
.../service/core/plugin/PluginClassLoader.java | 20 +++++++++++++++++---
.../service/core/plugin/PluginClassLoaderTest.java | 3 +--
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoader.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoader.java
index 29a56b538..34c673393 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoader.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoader.java
@@ -51,6 +51,8 @@ public class PluginClassLoader extends URLClassLoader {
public static final String PLUGIN_PATH = "META-INF/plugin.yaml";
+ public static final String WINDOWS_PREFIX = "win";
+
/**
* plugin.yaml should less than 1k
*/
@@ -61,10 +63,12 @@ public class PluginClassLoader extends URLClassLoader {
*/
private Map<String, PluginDefinition> pluginDefinitionMap = new HashMap<>();
private ObjectMapper yamlMapper;
+ private String osName;
- private PluginClassLoader(URL url, ClassLoader parent) throws IOException {
+ private PluginClassLoader(URL url, ClassLoader parent, String osName) throws IOException {
super(new URL[]{url}, parent);
this.pluginDirectory = new File(url.getPath());
+ this.osName = osName;
initYamlMapper();
loadPluginDefinition();
}
@@ -73,13 +77,19 @@ public class PluginClassLoader extends URLClassLoader {
* Get pluginClassLoader by plugin url.
*/
public static PluginClassLoader getFromPluginUrl(String url, ClassLoader parent) {
+ log.info("ClassLoaderPath:{}", url);
checkClassLoader(parent);
checkUrl(url);
return AccessController.doPrivileged(new PrivilegedAction<PluginClassLoader>() {
@SneakyThrows
@Override
public PluginClassLoader run() {
- return new PluginClassLoader(new URL("file://" + url), parent);
+ String os = System.getProperty("os.name").toLowerCase();
+ if (os.startsWith(WINDOWS_PREFIX)) {
+ return new PluginClassLoader(new URL("file:///" + url), parent, os);
+ } else {
+ return new PluginClassLoader(new URL("file://" + url), parent, os);
+ }
}
});
}
@@ -139,7 +149,11 @@ public class PluginClassLoader extends URLClassLoader {
String pluginDef = readPluginDef(pluginJar);
pluginDef = pluginDef.replaceAll("[\\x00]+", "");
PluginDefinition definition = yamlMapper.readValue(pluginDef, PluginDefinition.class);
- addURL(new URL("file://" + jarFile.getAbsolutePath()));
+ if (osName.startsWith(WINDOWS_PREFIX)) {
+ addURL(new URL("file:///" + jarFile.getAbsolutePath()));
+ } else {
+ addURL(new URL("file://" + jarFile.getAbsolutePath()));
+ }
checkPluginValid(jarFile, definition);
definitions.add(definition);
}
diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoaderTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoaderTest.java
index 7402551af..4a7535d76 100644
--- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoaderTest.java
+++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/plugin/PluginClassLoaderTest.java
@@ -38,8 +38,7 @@ public class PluginClassLoaderTest {
String path = this.getClass().getClassLoader().getResource("").getPath();
PluginClassLoader pluginClassLoader = PluginClassLoader.getFromPluginUrl(path + "plugins",
- Thread.currentThread()
- .getContextClassLoader());
+ Thread.currentThread().getContextClassLoader());
Map<String, PluginDefinition> pluginDefinitionMap = pluginClassLoader.getPluginDefinitions();
Assert.assertEquals(1, pluginDefinitionMap.size());
PluginDefinition pluginDefinition = Lists.newArrayList(pluginDefinitionMap.values()).get(0);