This is an automated email from the ASF dual-hosted git repository.

kirs pushed a commit to branch 1.3.7-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/1.3.7-prepare by this push:
     new d025812  [1.3.7-prepare#5552][Bug][Master] remove check with 
executePath when … (#5846)
d025812 is described below

commit d02581226799dc421e303f88f7ccdc4cfed6832b
Author: Kirs <[email protected]>
AuthorDate: Thu Jul 29 18:32:16 2021 +0800

    [1.3.7-prepare#5552][Bug][Master] remove check with executePath when … 
(#5846)
    
    * [1.3.7-prepare#5552][Bug][Master] remove check with executePath when kill 
yarn job
    pr #5552
    issue #5550
    
    * update method name
---
 .../dolphinscheduler/common/utils/FileUtils.java    | 21 +++++++++++++++++++++
 .../dolphinscheduler/server/utils/ProcessUtils.java | 12 +++++++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java
index e64c082..7c4a43c 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java
@@ -132,6 +132,27 @@ public class FileUtils {
     }
 
     /**
+     * Create a new work dir, if it exists, delete it and create it again
+     *
+     * @param execLocalPath execute local path
+     * @throws IOException errors
+     */
+    public static void createWorkDir(String execLocalPath) throws IOException {
+        //if work dir exists, first delete
+        File execLocalPathFile = new File(execLocalPath);
+
+        if (execLocalPathFile.exists()) {
+            org.apache.commons.io.FileUtils.forceDelete(execLocalPathFile);
+        }
+
+        //create work dir
+        org.apache.commons.io.FileUtils.forceMkdir(execLocalPathFile);
+        String mkdirLog = "create dir success " + execLocalPath;
+        LoggerUtils.logInfo(Optional.ofNullable(logger), mkdirLog);
+        LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), 
mkdirLog);
+    }
+
+    /**
      * create directory and user
      * @param execLocalPath execute local path
      * @param userName user name
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
index dcbb7c4..b79ddce 100644
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
+++ 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
@@ -430,12 +430,14 @@ public class ProcessUtils {
                 }
             }
             if (StringUtils.isNotEmpty(log)) {
-                List<String> appIds = LoggerUtils.getAppIds(log, logger);
-                String workerDir = taskExecutionContext.getExecutePath();
-                if (StringUtils.isEmpty(workerDir)) {
-                    logger.error("task instance work dir is empty");
-                    throw new RuntimeException("task instance work dir is 
empty");
+                if 
(StringUtils.isEmpty(taskExecutionContext.getExecutePath())) {
+                    
taskExecutionContext.setExecutePath(FileUtils.getProcessExecDir(taskExecutionContext.getProjectId(),
+                            taskExecutionContext.getProcessDefineId(),
+                            taskExecutionContext.getProcessInstanceId(),
+                            taskExecutionContext.getTaskInstanceId()));
                 }
+                FileUtils.createWorkDir(taskExecutionContext.getExecutePath());
+                List<String> appIds = LoggerUtils.getAppIds(log, logger);
                 if (CollectionUtils.isNotEmpty(appIds)) {
                     cancelApplication(appIds, logger, 
taskExecutionContext.getTenantCode(), taskExecutionContext.getExecutePath());
                     return appIds;

Reply via email to