From 2c057d6a8f010b260534bdcd42f7832cab819462 Mon Sep 17 00:00:00 2001 From: Rick Cheng Date: Wed, 7 Jun 2023 14:59:25 +0800 Subject: [PATCH] [Improvement-14292][Common] Remove the duplicate OSUtils (#14293) --- .../plugin/alert/script/OSUtils.java | 29 -- .../plugin/alert/script/ScriptSender.java | 1 + .../common/utils/OSUtils.java | 4 + .../task/api/AbstractCommandExecutor.java | 2 +- .../plugin/task/api/AbstractShell.java | 361 ------------------ .../plugin/task/api/ShellExecutor.java | 177 --------- .../plugin/task/api/utils/OSUtils.java | 84 ---- .../plugin/task/api/utils/ProcessUtils.java | 1 + .../plugin/kubeflow/KubeflowTask.java | 2 +- .../plugin/task/mlflow/MlflowTask.java | 2 +- .../task/pytorch/GitProjectManager.java | 4 +- 11 files changed, 11 insertions(+), 656 deletions(-) delete mode 100644 dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java delete mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractShell.java delete mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/ShellExecutor.java delete mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/OSUtils.java diff --git a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java deleted file mode 100644 index ef5fcf67d2..0000000000 --- a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.dolphinscheduler.plugin.alert.script; - -public final class OSUtils { - - private OSUtils() { - throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); - } - - static Boolean isWindows() { - return System.getProperty("os.name").startsWith("Windows"); - } -} diff --git a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java index cc44d6fad3..f78c6f5749 100644 --- a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java +++ b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptSender.java @@ -18,6 +18,7 @@ package org.apache.dolphinscheduler.plugin.alert.script; import org.apache.dolphinscheduler.alert.api.AlertResult; +import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.commons.lang3.StringUtils; diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java index d133046981..358d77a5f1 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java @@ -460,4 +460,8 @@ public class OSUtils { return false; } + public static Boolean isWindows() { + return System.getProperty("os.name").startsWith("Windows"); + } + } diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java index 5999a98d9a..5fcdab0f5d 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java @@ -24,12 +24,12 @@ import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_COD import org.apache.dolphinscheduler.common.constants.TenantConstants; import org.apache.dolphinscheduler.common.thread.ThreadUtils; +import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.common.utils.PropertyUtils; import org.apache.dolphinscheduler.plugin.task.api.enums.TaskExecutionStatus; import org.apache.dolphinscheduler.plugin.task.api.model.TaskResponse; import org.apache.dolphinscheduler.plugin.task.api.utils.AbstractCommandExecutorConstants; import org.apache.dolphinscheduler.plugin.task.api.utils.LogUtils; -import org.apache.dolphinscheduler.plugin.task.api.utils.OSUtils; import org.apache.dolphinscheduler.plugin.task.api.utils.ProcessUtils; import org.apache.commons.lang3.StringUtils; diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractShell.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractShell.java deleted file mode 100644 index 0f5fba1a19..0000000000 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractShell.java +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.dolphinscheduler.plugin.task.api; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.Map; -import java.util.Set; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicBoolean; - -import lombok.extern.slf4j.Slf4j; - -/** - * A base class for running a Unix command. - * - * AbstractShell can be used to run unix commands like du or - * df. It also offers facilities to gate commands by - * time-intervals. - */ -@Slf4j -public abstract class AbstractShell { - - /** - * Time after which the executing script would be timedout - */ - protected long timeOutInterval = 0L; - /** - * If or not script timed out - */ - private AtomicBoolean timedOut; - - /** - * refresh interval in msec - */ - private long interval; - - /** - * last time the command was performed - */ - private long lastTime; - - /** - * env for the command execution - */ - private Map environment; - - private File dir; - - /** - * sub process used to execute the command - */ - private Process process; - private int exitCode; - - /** - * If or not script finished executing - */ - private AtomicBoolean completed; - - AbstractShell() { - this(0L); - } - - /** - * @param interval the minimum duration to wait before re-executing the - * command. - */ - AbstractShell(long interval) { - this.interval = interval; - this.lastTime = (interval < 0) ? 0 : -interval; - } - - /** - * set the environment for the command - * - * @param env Mapping of environment variables - */ - protected void setEnvironment(Map env) { - this.environment = env; - } - - /** - * set the working directory - * - * @param dir The directory where the command would be executed - */ - protected void setWorkingDirectory(File dir) { - this.dir = dir; - } - - /** - * check to see if a command needs to be executed and execute if needed - * - * @throws IOException errors - */ - protected void run() throws IOException { - if (lastTime + interval > System.currentTimeMillis()) { - return; - } - // reset for next run - exitCode = 0; - runCommand(); - } - - /** - * Run a command actual work - */ - private void runCommand() throws IOException { - ProcessBuilder builder = new ProcessBuilder(getExecString()); - Timer timeOutTimer = null; - ShellTimeoutTimerTask timeoutTimerTask; - timedOut = new AtomicBoolean(false); - completed = new AtomicBoolean(false); - - if (environment != null) { - builder.environment().putAll(this.environment); - } - if (dir != null) { - builder.directory(this.dir); - } - - process = builder.start(); - ProcessContainer.putProcess(process); - - if (timeOutInterval > 0) { - timeOutTimer = new Timer(); - timeoutTimerTask = new ShellTimeoutTimerTask( - this); - // One time scheduling. - timeOutTimer.schedule(timeoutTimerTask, timeOutInterval); - } - final BufferedReader errReader = - new BufferedReader( - new InputStreamReader(process.getErrorStream())); - BufferedReader inReader = - new BufferedReader( - new InputStreamReader(process.getInputStream())); - final StringBuilder errMsg = new StringBuilder(); - - // read error and input streams as this would free up the buffers - // free the error stream buffer - Thread errThread = new Thread() { - - @Override - public void run() { - try { - String line = errReader.readLine(); - while ((line != null) && !isInterrupted()) { - errMsg.append(line); - errMsg.append(System.getProperty("line.separator")); - line = errReader.readLine(); - } - } catch (IOException ioe) { - log.warn("Error reading the error stream", ioe); - } - } - }; - Thread inThread = new Thread() { - - @Override - public void run() { - try { - parseExecResult(inReader); - } catch (IOException ioe) { - log.warn("Error reading the in stream", ioe); - } - super.run(); - } - }; - try { - errThread.start(); - inThread.start(); - } catch (IllegalStateException e) { - log.error(" read error and input streams start error", e); - } - try { - // parse the output - exitCode = process.waitFor(); - try { - // make sure that the error and in thread exits - errThread.join(); - inThread.join(); - } catch (InterruptedException ie) { - log.warn("Interrupted while reading the error and in stream", ie); - } - completed.compareAndSet(false, true); - // the timeout thread handling - // taken care in finally block - if (exitCode != 0 || errMsg.length() > 0) { - throw new ExitCodeException(exitCode, errMsg.toString()); - } - } catch (InterruptedException ie) { - throw new IOException(ie.toString()); - } finally { - if ((timeOutTimer != null) && !timedOut.get()) { - timeOutTimer.cancel(); - } - // close the input stream - try { - inReader.close(); - } catch (IOException ioe) { - log.warn("Error while closing the input stream", ioe); - } - if (!completed.get()) { - errThread.interrupt(); - } - try { - errReader.close(); - } catch (IOException ioe) { - log.warn("Error while closing the error stream", ioe); - } - ProcessContainer.removeProcess(process); - process.destroy(); - lastTime = System.currentTimeMillis(); - } - } - - /** - * @return an array containing the command name and its parameters - */ - protected abstract String[] getExecString(); - - /** - * Parse the execution result - * - * @param lines lines - * @throws IOException errors - */ - protected abstract void parseExecResult(BufferedReader lines) throws IOException; - - /** - * get the current sub-process executing the given command - * - * @return process executing the command - */ - public Process getProcess() { - return process; - } - - /** - * get the exit code - * - * @return the exit code of the process - */ - public int getExitCode() { - return exitCode; - } - - /** - * Set if the command has timed out. - */ - private void setTimedOut() { - this.timedOut.set(true); - } - - /** - * Timer which is used to timeout scripts spawned off by shell. - */ - private static class ShellTimeoutTimerTask extends TimerTask { - - private AbstractShell shell; - - public ShellTimeoutTimerTask(AbstractShell shell) { - this.shell = shell; - } - - @Override - public void run() { - Process p = shell.getProcess(); - try { - p.exitValue(); - } catch (Exception e) { - // Process has not terminated. - // So check if it has completed - // if not just destroy it. - if (p != null && !shell.completed.get()) { - shell.setTimedOut(); - p.destroy(); - } - } - } - } - - /** - * This is an IOException with exit code added. - */ - public static class ExitCodeException extends IOException { - - private final int exitCode; - - public ExitCodeException(int exitCode, String message) { - super(message); - this.exitCode = exitCode; - } - - public int getExitCode() { - return exitCode; - } - } - - /** - * process manage container - */ - public static class ProcessContainer extends ConcurrentHashMap { - - private static final ProcessContainer container = new ProcessContainer(); - - private ProcessContainer() { - super(); - } - - public static final ProcessContainer getInstance() { - return container; - } - - public static void putProcess(Process process) { - getInstance().put(process.hashCode(), process); - } - - public static int processSize() { - return getInstance().size(); - } - - public static void removeProcess(Process process) { - getInstance().remove(process.hashCode()); - } - - public static void destroyAllProcess() { - Set> set = getInstance().entrySet(); - for (Entry entry : set) { - try { - entry.getValue().destroy(); - } catch (Exception e) { - log.error("Destroy All Processes error", e); - } - } - - log.info("close " + set.size() + " executing process tasks"); - } - } -} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/ShellExecutor.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/ShellExecutor.java deleted file mode 100644 index 3220350558..0000000000 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/ShellExecutor.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.dolphinscheduler.plugin.task.api; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.util.Map; - -/** - * shell command executor. - * - * ShellExecutor should be used in cases where the output - * of the command needs no explicit parsing and where the command, working - * directory and the environment remains unchanged. The output of the command - * is stored as-is and is expected to be small. - */ -public class ShellExecutor extends AbstractShell { - - private String[] command; - private StringBuilder output; - - public ShellExecutor(String... execString) { - this(execString, null); - } - - public ShellExecutor(String[] execString, File dir) { - this(execString, dir, null); - } - - public ShellExecutor(String[] execString, File dir, - Map env) { - this(execString, dir, env, 0L); - } - - /** - * Create a new instance of the ShellExecutor to execute a command. - * - * @param execString The command to execute with arguments - * @param dir If not-null, specifies the directory which should be set - * as the current working directory for the command. - * If null, the current working directory is not modified. - * @param env If not-null, environment of the command will include the - * key-value pairs specified in the map. If null, the current - * environment is not modified. - * @param timeout Specifies the time in milliseconds, after which the - * command will be killed and the status marked as timedout. - * If 0, the command will not be timed out. - */ - public ShellExecutor(String[] execString, File dir, - Map env, long timeout) { - command = execString.clone(); - if (dir != null) { - setWorkingDirectory(dir); - } - if (env != null) { - setEnvironment(env); - } - timeOutInterval = timeout; - } - - /** - * Static method to execute a shell command. - * Covers most of the simple cases without requiring the user to implement - * the AbstractShell interface. - * - * @param cmd shell command to execute. - * @return the output of the executed command. - * @throws IOException errors - */ - public static String execCommand(String... cmd) throws IOException { - return execCommand(null, cmd, 0L); - } - - /** - * Static method to execute a shell command. - * Covers most of the simple cases without requiring the user to implement - * the AbstractShell interface. - * - * @param env the map of environment key=value - * @param cmd shell command to execute. - * @param timeout time in milliseconds after which script should be marked timeout - * @return the output of the executed command. - * @throws IOException errors - */ - public static String execCommand(Map env, String[] cmd, - long timeout) throws IOException { - ShellExecutor exec = new ShellExecutor(cmd, null, env, - timeout); - exec.execute(); - return exec.getOutput(); - } - - /** - * Static method to execute a shell command. - * Covers most of the simple cases without requiring the user to implement - * the AbstractShell interface. - * - * @param env the map of environment key=value - * @param cmd shell command to execute. - * @return the output of the executed command. - * @throws IOException errors - */ - public static String execCommand(Map env, String... cmd) throws IOException { - return execCommand(env, cmd, 0L); - } - - /** - * Execute the shell command - * - * @throws IOException errors - */ - public void execute() throws IOException { - this.run(); - } - - @Override - protected String[] getExecString() { - return command; - } - - @Override - protected void parseExecResult(BufferedReader lines) throws IOException { - output = new StringBuilder(); - char[] buf = new char[1024]; - int nRead; - String line = ""; - while ((nRead = lines.read(buf, 0, buf.length)) > 0) { - line = new String(buf, 0, nRead); - output.append(line); - } - } - - /** - * @return the output of the shell command - */ - public String getOutput() { - return (output == null) ? "" : output.toString(); - } - - /** - * Returns the commands of this instance. - * Arguments with spaces in are presented with quotes round; other - * arguments are presented raw - * - * @return a string representation of the object - */ - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - String[] args = getExecString(); - for (String s : args) { - if (s.indexOf(' ') >= 0) { - builder.append('"').append(s).append('"'); - } else { - builder.append(s); - } - builder.append(' '); - } - return builder.toString(); - } -} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/OSUtils.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/OSUtils.java deleted file mode 100644 index f8bfeae494..0000000000 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/OSUtils.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.dolphinscheduler.plugin.task.api.utils; - -import org.apache.dolphinscheduler.common.utils.PropertyUtils; -import org.apache.dolphinscheduler.plugin.task.api.ShellExecutor; - -import org.apache.commons.lang3.StringUtils; - -import java.io.IOException; -import java.util.StringTokenizer; - -public class OSUtils { - - private OSUtils() { - throw new IllegalStateException("Utility class"); - } - - /** - * get sudo command - * - * @param tenantCode tenantCode - * @param command command - * @return result of sudo execute command - */ - public static String getSudoCmd(String tenantCode, String command) { - return StringUtils.isEmpty(tenantCode) || !isSudoEnable() ? command : "sudo -u " + tenantCode + " " + command; - } - - /** - * use sudo or not - * - * @return true is use sudo - */ - public static boolean isSudoEnable() { - return PropertyUtils.getBoolean("sudo.enable", Boolean.TRUE); - } - - /** - * Execute the corresponding command of Linux or Windows - * - * @param command command - * @return result of execute command - * @throws IOException errors - */ - public static String exeCmd(String command) throws IOException { - StringTokenizer st = new StringTokenizer(command); - String[] cmdArray = new String[st.countTokens()]; - for (int i = 0; st.hasMoreTokens(); i++) { - cmdArray[i] = st.nextToken(); - } - return exeShell(cmdArray); - } - - /** - * Execute the shell - * - * @param command command - * @return result of execute the shell - * @throws IOException errors - */ - public static String exeShell(String[] command) throws IOException { - return ShellExecutor.execCommand(command); - } - - public static String getOSName() { - return System.getProperty("os.name"); - } -} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/ProcessUtils.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/ProcessUtils.java index db310d70ed..d60c007c36 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/ProcessUtils.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/ProcessUtils.java @@ -23,6 +23,7 @@ import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.COMMA; import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.TASK_TYPE_SET_K8S; import org.apache.dolphinscheduler.common.enums.ResourceManagerType; +import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.common.utils.PropertyUtils; import org.apache.dolphinscheduler.plugin.task.api.K8sTaskExecutionContext; import org.apache.dolphinscheduler.plugin.task.api.TaskConstants; diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-kubeflow/src/main/java/org/apache/dolphinscheduler/plugin/kubeflow/KubeflowTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-kubeflow/src/main/java/org/apache/dolphinscheduler/plugin/kubeflow/KubeflowTask.java index beea17b0bc..d16c472f0f 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-kubeflow/src/main/java/org/apache/dolphinscheduler/plugin/kubeflow/KubeflowTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-kubeflow/src/main/java/org/apache/dolphinscheduler/plugin/kubeflow/KubeflowTask.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.plugin.kubeflow; import org.apache.dolphinscheduler.common.thread.ThreadUtils; import org.apache.dolphinscheduler.common.utils.JSONUtils; +import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.plugin.task.api.AbstractRemoteTask; import org.apache.dolphinscheduler.plugin.task.api.TaskConstants; import org.apache.dolphinscheduler.plugin.task.api.TaskException; @@ -26,7 +27,6 @@ import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; import org.apache.dolphinscheduler.plugin.task.api.model.Property; import org.apache.dolphinscheduler.plugin.task.api.parser.ParamUtils; import org.apache.dolphinscheduler.plugin.task.api.parser.ParameterUtils; -import org.apache.dolphinscheduler.plugin.task.api.utils.OSUtils; import java.io.IOException; import java.nio.file.Files; diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-mlflow/src/main/java/org/apache/dolphinscheduler/plugin/task/mlflow/MlflowTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-mlflow/src/main/java/org/apache/dolphinscheduler/plugin/task/mlflow/MlflowTask.java index b907a22eba..642985c803 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-mlflow/src/main/java/org/apache/dolphinscheduler/plugin/task/mlflow/MlflowTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-mlflow/src/main/java/org/apache/dolphinscheduler/plugin/task/mlflow/MlflowTask.java @@ -21,6 +21,7 @@ import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_COD import org.apache.dolphinscheduler.common.thread.ThreadUtils; import org.apache.dolphinscheduler.common.utils.JSONUtils; +import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.common.utils.PropertyUtils; import org.apache.dolphinscheduler.plugin.task.api.AbstractTask; import org.apache.dolphinscheduler.plugin.task.api.ShellCommandExecutor; @@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.plugin.task.api.model.Property; import org.apache.dolphinscheduler.plugin.task.api.model.TaskResponse; import org.apache.dolphinscheduler.plugin.task.api.parser.ParamUtils; import org.apache.dolphinscheduler.plugin.task.api.parser.ParameterUtils; -import org.apache.dolphinscheduler.plugin.task.api.utils.OSUtils; import org.apache.commons.lang3.StringUtils; diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java index 51d325be5f..3189f26920 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java @@ -17,9 +17,9 @@ package org.apache.dolphinscheduler.plugin.task.pytorch; -import static org.apache.dolphinscheduler.plugin.task.api.AbstractShell.ExitCodeException; +import static org.apache.dolphinscheduler.common.shell.AbstractShell.ExitCodeException; -import org.apache.dolphinscheduler.plugin.task.api.utils.OSUtils; +import org.apache.dolphinscheduler.common.utils.OSUtils; import java.io.File; import java.nio.file.Paths;