Browse Source

Recreate new TaskInstance Working Directory when exist in worker (#15358)

3.2.1-prepare
Wenjun Ruan 11 months ago committed by GitHub
parent
commit
0e88ea3ac8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerTaskExecutor.java
  2. 23
      dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/utils/TaskExecutionContextUtils.java

2
dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerTaskExecutor.java

@ -217,7 +217,7 @@ public abstract class WorkerTaskExecutor implements Runnable {
taskExecutionContext.setTenantCode(tenant); taskExecutionContext.setTenantCode(tenant);
log.info("TenantCode: {} check successfully", taskExecutionContext.getTenantCode()); log.info("TenantCode: {} check successfully", taskExecutionContext.getTenantCode());
TaskExecutionContextUtils.createProcessLocalPathIfAbsent(taskExecutionContext); TaskExecutionContextUtils.createTaskInstanceWorkingDirectory(taskExecutionContext);
log.info("WorkflowInstanceExecDir: {} check successfully", taskExecutionContext.getExecutePath()); log.info("WorkflowInstanceExecDir: {} check successfully", taskExecutionContext.getExecutePath());
TaskChannel taskChannel = TaskChannel taskChannel =

23
dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/utils/TaskExecutionContextUtils.java

@ -80,22 +80,29 @@ public class TaskExecutionContextUtils {
} }
} }
public static void createProcessLocalPathIfAbsent(TaskExecutionContext taskExecutionContext) throws TaskException { public static void createTaskInstanceWorkingDirectory(TaskExecutionContext taskExecutionContext) throws TaskException {
try {
// local execute path // local execute path
String execLocalPath = FileUtils.getProcessExecDir( String taskInstanceWorkingDirectory = FileUtils.getProcessExecDir(
taskExecutionContext.getTenantCode(), taskExecutionContext.getTenantCode(),
taskExecutionContext.getProjectCode(), taskExecutionContext.getProjectCode(),
taskExecutionContext.getProcessDefineCode(), taskExecutionContext.getProcessDefineCode(),
taskExecutionContext.getProcessDefineVersion(), taskExecutionContext.getProcessDefineVersion(),
taskExecutionContext.getProcessInstanceId(), taskExecutionContext.getProcessInstanceId(),
taskExecutionContext.getTaskInstanceId()); taskExecutionContext.getTaskInstanceId());
taskExecutionContext.setExecutePath(execLocalPath); try {
taskExecutionContext.setAppInfoPath(FileUtils.getAppInfoPath(execLocalPath)); Path path = Paths.get(taskInstanceWorkingDirectory);
Path executePath = Paths.get(taskExecutionContext.getExecutePath()); if (Files.deleteIfExists(path)) {
FileUtils.createDirectoryIfNotPresent(executePath); log.warn("The TaskInstance WorkingDirectory: {} is exist, will recreate again",
taskInstanceWorkingDirectory);
}
Files.createDirectories(path);
taskExecutionContext.setExecutePath(taskInstanceWorkingDirectory);
taskExecutionContext.setExecutePath(taskInstanceWorkingDirectory);
taskExecutionContext.setAppInfoPath(FileUtils.getAppInfoPath(taskInstanceWorkingDirectory));
} catch (Throwable ex) { } catch (Throwable ex) {
throw new TaskException("Cannot create process execute dir", ex); throw new TaskException(
"Cannot create TaskInstance WorkingDirectory: " + taskInstanceWorkingDirectory + " failed", ex);
} }
} }

Loading…
Cancel
Save