From 04825b9bc87e6cb122a7d0ef3398308f825eb50b Mon Sep 17 00:00:00 2001 From: yangyanhua <806917822@qq.com> Date: Wed, 28 Feb 2024 10:30:57 +0800 Subject: [PATCH 1/5] fixed The jar type of java task shell script error --- .../plugin/task/java/JavaTask.java | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java index 179b50c35c..b4ad24918e 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java @@ -49,7 +49,9 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -183,9 +185,8 @@ public class JavaTask extends AbstractTask { StringBuilder builder = new StringBuilder(); builder.append(getJavaCommandPath()) .append("java").append(" ") - .append(buildResourcePath()).append(" ") + .append(buildExtDirs()).append(" ") .append("-jar").append(" ") - .append(taskRequest.getExecutePath()).append(FOLDER_SEPARATOR) .append(mainJarName).append(" ") .append(javaParameters.getMainArgs().trim()).append(" ") .append(javaParameters.getJvmArgs().trim()); @@ -290,13 +291,32 @@ public class JavaTask extends AbstractTask { for (ResourceInfo info : javaParameters.getResourceFilesList()) { builder.append(JavaConstants.PATH_SEPARATOR); builder - .append(taskRequest.getExecutePath()) - .append(FOLDER_SEPARATOR) .append(resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal()); } return builder.toString(); } + protected String buildExtDirs() { + StringBuilder builder = new StringBuilder(); + if (javaParameters.isModulePath()) { + builder.append("--module-path"); + } else { + builder.append("-Djava.ext.dirs=\"$JAVA_HOME/jre/lib/ext"); + } + ResourceContext resourceContext = taskRequest.getResourceContext(); + Set set = new HashSet<>(); + for (ResourceInfo info : javaParameters.getResourceFilesList()) { + String absolutePathInLocal = resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal(); + String extdir = absolutePathInLocal.substring(0, absolutePathInLocal.lastIndexOf(File.separator)); + if (set.add(extdir)) { + builder.append(JavaConstants.PATH_SEPARATOR); + builder.append(extdir); + } + } + builder.append("\""); + return builder.toString(); + } + /** * Constructs a shell command compiled from a Java source file * From 86a848e0966b83d33cb14450df0cf60afb0330e4 Mon Sep 17 00:00:00 2001 From: yangyanhua <806917822@qq.com> Date: Wed, 28 Feb 2024 10:48:27 +0800 Subject: [PATCH 2/5] Revert "fixed The jar type of java task shell script error" This reverts commit 04825b9bc87e6cb122a7d0ef3398308f825eb50b. --- .../plugin/task/java/JavaTask.java | 28 +++---------------- 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java index b4ad24918e..179b50c35c 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java @@ -49,9 +49,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -185,8 +183,9 @@ public class JavaTask extends AbstractTask { StringBuilder builder = new StringBuilder(); builder.append(getJavaCommandPath()) .append("java").append(" ") - .append(buildExtDirs()).append(" ") + .append(buildResourcePath()).append(" ") .append("-jar").append(" ") + .append(taskRequest.getExecutePath()).append(FOLDER_SEPARATOR) .append(mainJarName).append(" ") .append(javaParameters.getMainArgs().trim()).append(" ") .append(javaParameters.getJvmArgs().trim()); @@ -291,32 +290,13 @@ public class JavaTask extends AbstractTask { for (ResourceInfo info : javaParameters.getResourceFilesList()) { builder.append(JavaConstants.PATH_SEPARATOR); builder + .append(taskRequest.getExecutePath()) + .append(FOLDER_SEPARATOR) .append(resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal()); } return builder.toString(); } - protected String buildExtDirs() { - StringBuilder builder = new StringBuilder(); - if (javaParameters.isModulePath()) { - builder.append("--module-path"); - } else { - builder.append("-Djava.ext.dirs=\"$JAVA_HOME/jre/lib/ext"); - } - ResourceContext resourceContext = taskRequest.getResourceContext(); - Set set = new HashSet<>(); - for (ResourceInfo info : javaParameters.getResourceFilesList()) { - String absolutePathInLocal = resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal(); - String extdir = absolutePathInLocal.substring(0, absolutePathInLocal.lastIndexOf(File.separator)); - if (set.add(extdir)) { - builder.append(JavaConstants.PATH_SEPARATOR); - builder.append(extdir); - } - } - builder.append("\""); - return builder.toString(); - } - /** * Constructs a shell command compiled from a Java source file * From 98ce0ee25d6e87cdd99f69e953309e839833415d Mon Sep 17 00:00:00 2001 From: yangyanhua <806917822@qq.com> Date: Wed, 28 Feb 2024 10:50:11 +0800 Subject: [PATCH 3/5] fixed The jar type of java task shell script error(#15641) --- .../plugin/task/java/JavaTask.java | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java index 179b50c35c..b4ad24918e 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java @@ -49,7 +49,9 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -183,9 +185,8 @@ public class JavaTask extends AbstractTask { StringBuilder builder = new StringBuilder(); builder.append(getJavaCommandPath()) .append("java").append(" ") - .append(buildResourcePath()).append(" ") + .append(buildExtDirs()).append(" ") .append("-jar").append(" ") - .append(taskRequest.getExecutePath()).append(FOLDER_SEPARATOR) .append(mainJarName).append(" ") .append(javaParameters.getMainArgs().trim()).append(" ") .append(javaParameters.getJvmArgs().trim()); @@ -290,13 +291,32 @@ public class JavaTask extends AbstractTask { for (ResourceInfo info : javaParameters.getResourceFilesList()) { builder.append(JavaConstants.PATH_SEPARATOR); builder - .append(taskRequest.getExecutePath()) - .append(FOLDER_SEPARATOR) .append(resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal()); } return builder.toString(); } + protected String buildExtDirs() { + StringBuilder builder = new StringBuilder(); + if (javaParameters.isModulePath()) { + builder.append("--module-path"); + } else { + builder.append("-Djava.ext.dirs=\"$JAVA_HOME/jre/lib/ext"); + } + ResourceContext resourceContext = taskRequest.getResourceContext(); + Set set = new HashSet<>(); + for (ResourceInfo info : javaParameters.getResourceFilesList()) { + String absolutePathInLocal = resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal(); + String extdir = absolutePathInLocal.substring(0, absolutePathInLocal.lastIndexOf(File.separator)); + if (set.add(extdir)) { + builder.append(JavaConstants.PATH_SEPARATOR); + builder.append(extdir); + } + } + builder.append("\""); + return builder.toString(); + } + /** * Constructs a shell command compiled from a Java source file * From bc744819f7e76ec9707441c5310c182fc1e695ad Mon Sep 17 00:00:00 2001 From: yangyanhua <806917822@qq.com> Date: Wed, 28 Feb 2024 12:13:17 +0800 Subject: [PATCH 4/5] add a a Unit Test(#15641) --- .../dolphinscheduler/plugin/task/java/JavaTaskTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/test/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/test/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java index 55756241ce..6bb5228e24 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/test/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/test/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java @@ -84,8 +84,9 @@ public class JavaTaskTest { public void buildJarCommand() { String homeBinPath = JavaConstants.JAVA_HOME_VAR + File.separator + "bin" + File.separator; JavaTask javaTask = runJarType(); - Assertions.assertEquals(javaTask.buildJarCommand(), homeBinPath - + "java -classpath .:/tmp/dolphinscheduler/test/executepath:/tmp/dolphinscheduler/test/executepath/opt/share/jar/resource2.jar -jar /tmp/dolphinscheduler/test/executepath/opt/share/jar/main.jar -host 127.0.0.1 -port 8080 -xms:50m"); + String buildJarCommand = javaTask.buildJarCommand(); + Assertions.assertEquals(buildJarCommand, homeBinPath + + "java -Djava.ext.dirs=\"$JAVA_HOME/jre/lib/ext;opt/share/jar\" -jar /opt/share/jar/main.jar -host 127.0.0.1 -port 8080 -xms:50m"); } /** @@ -284,7 +285,7 @@ public class JavaTaskTest { taskExecutionContext.setTaskAppId("runJavaType"); ResourceContext.ResourceItem resourceItem1 = new ResourceContext.ResourceItem(); resourceItem1.setResourceAbsolutePathInStorage("/opt/share/jar/resource2.jar"); - resourceItem1.setResourceAbsolutePathInLocal("opt/share/jar/resource2.jar"); + resourceItem1.setResourceAbsolutePathInLocal("/opt/share/jar/resource2.jar"); ResourceContext.ResourceItem resourceItem2 = new ResourceContext.ResourceItem(); resourceItem2.setResourceAbsolutePathInStorage("/opt/share/jar/main.jar"); From 0b9c22a7d44eca7be48bc035cbf4c93b35aa9eba Mon Sep 17 00:00:00 2001 From: yangyanhua <806917822@qq.com> Date: Fri, 1 Mar 2024 08:53:28 +0800 Subject: [PATCH 5/5] Run 'mvn spotless:apply' to fix these violations(#15641) --- .../apache/dolphinscheduler/plugin/task/java/JavaTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java index b4ad24918e..372d0c6de6 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java @@ -17,7 +17,6 @@ package org.apache.dolphinscheduler.plugin.task.java; -import static org.apache.dolphinscheduler.common.constants.Constants.FOLDER_SEPARATOR; import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.JAVA_HOME_VAR; import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.PUBLIC_CLASS_NAME_REGEX; @@ -306,7 +305,8 @@ public class JavaTask extends AbstractTask { ResourceContext resourceContext = taskRequest.getResourceContext(); Set set = new HashSet<>(); for (ResourceInfo info : javaParameters.getResourceFilesList()) { - String absolutePathInLocal = resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal(); + String absolutePathInLocal = + resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal(); String extdir = absolutePathInLocal.substring(0, absolutePathInLocal.lastIndexOf(File.separator)); if (set.add(extdir)) { builder.append(JavaConstants.PATH_SEPARATOR);