Browse Source

refactor-worker merge to dev bug fix

qiaozhanwei 5 years ago
parent
commit
1276e0d8e1

+ 28 - 16
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/consumer/TaskPriorityQueueConsumer.java

@@ -27,6 +27,9 @@ import org.apache.dolphinscheduler.common.task.AbstractParameters;
 import org.apache.dolphinscheduler.common.task.datax.DataxParameters;
 import org.apache.dolphinscheduler.common.task.procedure.ProcedureParameters;
 import org.apache.dolphinscheduler.common.task.sql.SqlParameters;
+import org.apache.dolphinscheduler.common.task.sqoop.SqoopParameters;
+import org.apache.dolphinscheduler.common.task.sqoop.sources.SourceMysqlParameter;
+import org.apache.dolphinscheduler.common.task.sqoop.targets.TargetMysqlParameter;
 import org.apache.dolphinscheduler.common.thread.Stopper;
 import org.apache.dolphinscheduler.common.utils.*;
 import org.apache.dolphinscheduler.dao.entity.*;
@@ -44,7 +47,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -219,13 +221,17 @@ public class TaskPriorityQueueConsumer extends Thread{
         DataSource dataTarget = processService.findDataSourceById(dataxParameters.getDataTarget());
 
 
-        dataxTaskExecutionContext.setDataSourceId(dataxParameters.getDataSource());
-        dataxTaskExecutionContext.setSourcetype(dataSource.getType().getCode());
-        dataxTaskExecutionContext.setSourceConnectionParams(dataSource.getConnectionParams());
+        if (dataSource != null){
+            dataxTaskExecutionContext.setDataSourceId(dataxParameters.getDataSource());
+            dataxTaskExecutionContext.setSourcetype(dataSource.getType().getCode());
+            dataxTaskExecutionContext.setSourceConnectionParams(dataSource.getConnectionParams());
+        }
 
-        dataxTaskExecutionContext.setDataTargetId(dataxParameters.getDataTarget());
-        dataxTaskExecutionContext.setTargetType(dataTarget.getType().getCode());
-        dataxTaskExecutionContext.setTargetConnectionParams(dataTarget.getConnectionParams());
+        if (dataTarget != null){
+            dataxTaskExecutionContext.setDataTargetId(dataxParameters.getDataTarget());
+            dataxTaskExecutionContext.setTargetType(dataTarget.getType().getCode());
+            dataxTaskExecutionContext.setTargetConnectionParams(dataTarget.getConnectionParams());
+        }
     }
 
 
@@ -235,19 +241,25 @@ public class TaskPriorityQueueConsumer extends Thread{
      * @param taskNode taskNode
      */
     private void setSqoopTaskRelation(SqoopTaskExecutionContext sqoopTaskExecutionContext, TaskNode taskNode) {
-        DataxParameters dataxParameters = JSONObject.parseObject(taskNode.getParams(), DataxParameters.class);
+        SqoopParameters sqoopParameters = JSONObject.parseObject(taskNode.getParams(), SqoopParameters.class);
 
-        DataSource dataSource = processService.findDataSourceById(dataxParameters.getDataSource());
-        DataSource dataTarget = processService.findDataSourceById(dataxParameters.getDataTarget());
+        SourceMysqlParameter sourceMysqlParameter = JSONUtils.parseObject(sqoopParameters.getSourceParams(), SourceMysqlParameter.class);
+        TargetMysqlParameter targetMysqlParameter = JSONUtils.parseObject(sqoopParameters.getTargetParams(), TargetMysqlParameter.class);
 
+        DataSource dataSource = processService.findDataSourceById(sourceMysqlParameter.getSrcDatasource());
+        DataSource dataTarget = processService.findDataSourceById(targetMysqlParameter.getTargetDatasource());
 
-        sqoopTaskExecutionContext.setDataSourceId(dataxParameters.getDataSource());
-        sqoopTaskExecutionContext.setSourcetype(dataSource.getType().getCode());
-        sqoopTaskExecutionContext.setSourceConnectionParams(dataSource.getConnectionParams());
+        if (dataSource != null){
+            sqoopTaskExecutionContext.setDataSourceId(dataSource.getId());
+            sqoopTaskExecutionContext.setSourcetype(dataSource.getType().getCode());
+            sqoopTaskExecutionContext.setSourceConnectionParams(dataSource.getConnectionParams());
+        }
 
-        sqoopTaskExecutionContext.setDataTargetId(dataxParameters.getDataTarget());
-        sqoopTaskExecutionContext.setTargetType(dataTarget.getType().getCode());
-        sqoopTaskExecutionContext.setTargetConnectionParams(dataTarget.getConnectionParams());
+        if (dataTarget != null){
+            sqoopTaskExecutionContext.setDataTargetId(dataTarget.getId());
+            sqoopTaskExecutionContext.setTargetType(dataTarget.getType().getCode());
+            sqoopTaskExecutionContext.setTargetConnectionParams(dataTarget.getConnectionParams());
+        }
     }
 
     /**

+ 4 - 3
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java

@@ -21,8 +21,6 @@ import com.alibaba.fastjson.JSONObject;
 import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
 import org.apache.dolphinscheduler.common.model.TaskNode;
 import org.apache.dolphinscheduler.common.process.Property;
-import org.apache.dolphinscheduler.common.process.ResourceInfo;
-import org.apache.dolphinscheduler.common.task.AbstractParameters;
 import org.apache.dolphinscheduler.common.task.TaskTimeoutParameter;
 import org.apache.dolphinscheduler.common.utils.*;
 import org.apache.dolphinscheduler.remote.command.TaskExecuteResponseCommand;
@@ -36,7 +34,6 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 
 /**
@@ -213,6 +210,10 @@ public class TaskExecuteThread implements Runnable {
                                   List<String> projectRes,
                                   String tenantCode,
                                   Logger logger) throws Exception {
+        if (CollectionUtils.isEmpty(projectRes)){
+            return;
+        }
+
         for (String resource : projectRes) {
             File resFile = new File(execLocalPath, resource);
             if (!resFile.exists()) {

File diff suppressed because it is too large
+ 4 - 4
dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/worker/task/sqoop/SqoopTaskTest.java