You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ki...@apache.org on 2021/07/12 17:16:43 UTC
[dolphinscheduler] branch dev updated: [Improvement][SPI] support
load single plugin (#5794)
This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 9c217d0 [Improvement][SPI] support load single plugin (#5794)
9c217d0 is described below
commit 9c217d072df6d60d02e0d94c81ca68460b4e6f77
Author: Wenjun Ruan <86...@qq.com>
AuthorDate: Tue Jul 13 01:16:34 2021 +0800
[Improvement][SPI] support load single plugin (#5794)
change load operation of 'registry.plugin.dir'
---
.../spi/plugin/DolphinPluginLoader.java | 28 ++++++++++++++++++----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/plugin/DolphinPluginLoader.java b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/plugin/DolphinPluginLoader.java
index 66244b2..9d7b2cd 100644
--- a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/plugin/DolphinPluginLoader.java
+++ b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/plugin/DolphinPluginLoader.java
@@ -30,8 +30,10 @@ import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.ServiceLoader;
import java.util.Set;
+import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,7 +82,7 @@ public class DolphinPluginLoader {
public void loadPlugins()
throws Exception {
- for (File file : listPluginDirs(installedPluginsDir)) {
+ for (File file : listPluginInstanceDirs(installedPluginsDir)) {
if (file.isDirectory()) {
loadPlugin(file.getAbsolutePath());
}
@@ -145,7 +147,7 @@ public class DolphinPluginLoader {
throws Exception {
logger.info("Classpath for {}:", dir.getName());
List<URL> urls = new ArrayList<>();
- for (File file : listPluginDirs(dir)) {
+ for (File file : listPluginInstanceJars(dir)) {
logger.info(" {}", file);
urls.add(file.toURI().toURL());
}
@@ -172,12 +174,28 @@ public class DolphinPluginLoader {
return new DolphinPluginClassLoader(urls, parent, DOLPHIN_SPI_PACKAGES);
}
- private static List<File> listPluginDirs(File installedPluginsDir) {
+ private static List<File> listPluginInstanceDirs(File installedPluginsDir) {
if (installedPluginsDir != null && installedPluginsDir.isDirectory()) {
File[] files = installedPluginsDir.listFiles();
if (files != null) {
- Arrays.sort(files);
- return ImmutableList.copyOf(files);
+ Optional<File> isNotDir = Arrays.stream(files).filter(file -> !file.isDirectory()).findAny();
+ if (isNotDir.isPresent()) {
+ return ImmutableList.of(installedPluginsDir);
+ } else {
+ Arrays.sort(files);
+ return ImmutableList.copyOf(files);
+ }
+ }
+ }
+ return ImmutableList.of();
+ }
+
+ private static List<File> listPluginInstanceJars(File installedPluginsDir) {
+ if (installedPluginsDir != null && installedPluginsDir.isDirectory()) {
+ File[] files = installedPluginsDir.listFiles();
+ if (files != null) {
+ return ImmutableList.copyOf(Arrays.stream(files).filter(file -> file.isFile() && file.getName().endsWith(".jar"))
+ .collect(Collectors.toList()));
}
}
return ImmutableList.of();