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

leonbao pushed a commit to branch json_split
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/json_split by this push:
     new 779596c  [Feature][JsonSplit] modify checkDAGRing and ProcessService 
method (#4931)
779596c is described below

commit 779596cf0583e1810466d0156a09dba3dcebbbb7
Author: JinyLeeChina <[email protected]>
AuthorDate: Thu Mar 4 10:22:14 2021 +0800

    [Feature][JsonSplit] modify checkDAGRing and ProcessService method (#4931)
    
    * modify checkDAGRing and ProcessService method
    
    * merge
    
    * modify dagRing
    
    Co-authored-by: JinyLeeChina <[email protected]>
---
 .../service/impl/ProcessDefinitionServiceImpl.java | 16 +----
 .../service/process/ProcessService.java            | 76 ++++++++--------------
 2 files changed, 30 insertions(+), 62 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
index 014dce8..d3da26f 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
@@ -61,7 +61,6 @@ import org.apache.dolphinscheduler.dao.entity.TaskInstance;
 import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionLogMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
-import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationLogMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
@@ -145,9 +144,6 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
     private ProcessTaskRelationMapper processTaskRelationMapper;
 
     @Autowired
-    private ProcessTaskRelationLogMapper processTaskRelationLogMapper;
-
-    @Autowired
     TaskDefinitionLogMapper taskDefinitionLogMapper;
 
     private SchedulerService schedulerService;
@@ -190,9 +186,8 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
             return checkProcessJson;
         }
 
-        Long processDefinitionCode;
         try {
-            processDefinitionCode = SnowFlakeUtils.getInstance().nextId();
+            long processDefinitionCode = SnowFlakeUtils.getInstance().nextId();
             processDefinition.setCode(processDefinitionCode);
         } catch (SnowFlakeException e) {
             putMsg(result, Status.CREATE_PROCESS_DEFINITION);
@@ -1346,7 +1341,7 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
                 }
                 runningNodeMap.remove(nodeName);
             }
-            if (waitingRunningNodeMap == null || waitingRunningNodeMap.size() 
== 0) {
+            if (waitingRunningNodeMap.size() == 0) {
                 break;
             } else {
                 runningNodeMap.putAll(waitingRunningNodeMap);
@@ -1359,7 +1354,6 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
         return result;
     }
 
-
     /**
      * whether the graph has a ring
      *
@@ -1368,15 +1362,12 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
      */
     private boolean graphHasCycle(List<TaskNode> taskNodeResponseList) {
         DAG<String, TaskNode, String> graph = new DAG<>();
-
         // Fill the vertices
         for (TaskNode taskNodeResponse : taskNodeResponseList) {
             graph.addNode(taskNodeResponse.getName(), taskNodeResponse);
         }
-
         // Fill edge relations
         for (TaskNode taskNodeResponse : taskNodeResponseList) {
-            taskNodeResponse.getPreTasks();
             List<String> preTasks = 
JSONUtils.toList(taskNodeResponse.getPreTasks(), String.class);
             if (CollectionUtils.isNotEmpty(preTasks)) {
                 for (String preTask : preTasks) {
@@ -1386,7 +1377,6 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
                 }
             }
         }
-
         return graph.hasCycle();
     }
 
@@ -1634,7 +1624,7 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
      * @param processDefinitionId processDefinitionId
      */
     private void setFailedProcessList(List<String> failedProcessList, String 
processDefinitionId) {
-        ProcessDefinition processDefinition = 
processDefinitionMapper.queryByDefineId(Integer.valueOf(processDefinitionId));
+        ProcessDefinition processDefinition = 
processDefinitionMapper.queryByDefineId(Integer.parseInt(processDefinitionId));
         if (processDefinition != null) {
             failedProcessList.add(processDefinitionId + "[" + 
processDefinition.getName() + "]");
         } else {
diff --git 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
index 260e660..981767a 100644
--- 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
+++ 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
@@ -350,17 +350,15 @@ public class ProcessService {
             logger.error("process define not exists");
             return new ArrayList<>();
         }
-        List<ProcessTaskRelation> processTaskRelations = 
getProcessTaskRelationList(processDefinition.getCode(), 
processDefinition.getVersion());
-        Map<Long, TaskDefinition> taskDefinitionMap = new HashMap<>();
-        for (ProcessTaskRelation processTaskRelation : processTaskRelations) {
-            if 
(taskDefinitionMap.containsKey(processTaskRelation.getPostTaskCode())) {
-                TaskDefinition taskDefinition = 
taskDefinitionLogMapper.queryByDefinitionCodeAndVersion(
-                        processTaskRelation.getPostTaskCode(), 
processTaskRelation.getPostNodeVersion());
-                taskDefinitionMap.put(processTaskRelation.getPostTaskCode(), 
taskDefinition);
+        List<ProcessTaskRelationLog> processTaskRelations = 
processTaskRelationLogMapper.queryByProcessCodeAndVersion(processDefinition.getCode(),
 processDefinition.getVersion());
+        Set<TaskDefinition> taskDefinitionSet = new HashSet<>();
+        for (ProcessTaskRelationLog processTaskRelation : 
processTaskRelations) {
+            if (processTaskRelation.getPostTaskCode() > 0) {
+                taskDefinitionSet.add(new 
TaskDefinition(processTaskRelation.getPostTaskCode(), 
processTaskRelation.getPostNodeVersion()));
             }
         }
-        return new ArrayList<>(taskDefinitionMap.values());
-
+        List<TaskDefinitionLog> taskDefinitionLogs = 
taskDefinitionLogMapper.queryByTaskDefinitions(taskDefinitionSet);
+        return new ArrayList<>(taskDefinitionLogs);
     }
 
     /**
@@ -614,7 +612,7 @@ public class ProcessService {
         processInstance.setConnects(processDefinition.getConnects());
 
         // reset global params while there are start parameters
-        setGlobalParamIfCommanded(processDefinition,cmdParam);
+        setGlobalParamIfCommanded(processDefinition, cmdParam);
 
         // curing global params
         processInstance.setGlobalParams(ParameterUtils.curingGlobalParams(
@@ -753,10 +751,10 @@ public class ProcessService {
                 // Recalculate global parameters after rerun.
 
                 
processInstance.setGlobalParams(ParameterUtils.curingGlobalParams(
-                    processDefinition.getGlobalParamMap(),
-                    processDefinition.getGlobalParamList(),
-                    commandTypeIfComplement,
-                    processInstance.getScheduleTime()));
+                        processDefinition.getGlobalParamMap(),
+                        processDefinition.getGlobalParamList(),
+                        commandTypeIfComplement,
+                        processInstance.getScheduleTime()));
             }
             processDefinition = 
processDefineMapper.selectById(processInstance.getProcessDefinitionId());
             processInstance.setProcessDefinition(processDefinition);
@@ -2090,13 +2088,13 @@ public class ProcessService {
     }
 
     /**
-     * get resource by resoruce id
+     * get resource by resource id
      *
-     * @param resoruceId resource id
+     * @param resourceId resource id
      * @return Resource
      */
-    public Resource getResourceById(int resoruceId) {
-        return resourceMapper.selectById(resoruceId);
+    public Resource getResourceById(int resourceId) {
+        return resourceMapper.selectById(resourceId);
     }
 
     /**
@@ -2134,16 +2132,15 @@ public class ProcessService {
             return Constants.EXIT_CODE_FAILURE;
         }
 
-        ProcessDefinition tmpDefinition = processDefinitionLog;
-        tmpDefinition.setId(processDefinition.getId());
-        tmpDefinition.setReleaseState(ReleaseState.OFFLINE);
-        tmpDefinition.setFlag(Flag.YES);
+        processDefinitionLog.setId(processDefinition.getId());
+        processDefinitionLog.setReleaseState(ReleaseState.OFFLINE);
+        processDefinitionLog.setFlag(Flag.YES);
 
         int switchResult = 0;
         if (0 == processDefinition.getId()) {
-            switchResult = processDefineMapper.insert(tmpDefinition);
+            switchResult = processDefineMapper.insert(processDefinitionLog);
         } else {
-            switchResult = processDefineMapper.updateById(tmpDefinition);
+            switchResult = 
processDefineMapper.updateById(processDefinitionLog);
         }
         switchProcessTaskRelationVersion(processDefinition);
         return switchResult;
@@ -2156,8 +2153,7 @@ public class ProcessService {
         }
         List<ProcessTaskRelationLog> processTaskRelationLogList = 
processTaskRelationLogMapper.queryByProcessCodeAndVersion(processDefinition.getCode(),
 processDefinition.getVersion());
         for (ProcessTaskRelationLog processTaskRelationLog : 
processTaskRelationLogList) {
-            ProcessTaskRelation processTaskRelation = processTaskRelationLog;
-            processTaskRelationMapper.insert(processTaskRelation);
+            processTaskRelationMapper.insert(processTaskRelationLog);
         }
     }
 
@@ -2327,14 +2323,12 @@ public class ProcessService {
                             now));
                 }
             } else {
-                // todo relation name
                 builderRelationList.add(new ProcessTaskRelation("",
                         processDefinition.getVersion(),
                         projectCode,
                         processDefinition.getCode(),
                         0L,
                         taskNameAndCode.get(taskNode.getName()),
-                        // todo conditionType
                         ConditionType.of("none"),
                         taskNode.getConditionResult(),
                         now,
@@ -2394,33 +2388,17 @@ public class ProcessService {
      */
     public DAG<String, TaskNode, TaskNodeRelation> 
genDagGraph(ProcessDefinition processDefinition) {
         List<TaskNode> taskNodeList = 
genTaskNodeList(processDefinition.getCode(), processDefinition.getVersion());
-        List<ProcessTaskRelation> processTaskRelations = 
getProcessTaskRelationList(processDefinition.getCode(), 
processDefinition.getVersion());
-        ProcessDag processDag = DagHelper.getProcessDag(taskNodeList, 
processTaskRelations);
+        List<ProcessTaskRelationLog> processTaskRelations = 
processTaskRelationLogMapper.queryByProcessCodeAndVersion(processDefinition.getCode(),
 processDefinition.getVersion());
+        ProcessDag processDag = DagHelper.getProcessDag(taskNodeList, new 
ArrayList<>(processTaskRelations));
         // Generate concrete Dag to be executed
         return DagHelper.buildDagGraph(processDag);
     }
 
     /**
-     * get process task relation list
-     * this function can be query relation list from log record
-     */
-    public List<ProcessTaskRelation> getProcessTaskRelationList(Long 
processCode, int processVersion) {
-        List<ProcessTaskRelationLog> taskRelationLogs = 
processTaskRelationLogMapper.queryByProcessCodeAndVersion(
-                processCode,
-                processVersion);
-        List<ProcessTaskRelation> processTaskRelations = new ArrayList<>();
-        for (ProcessTaskRelationLog processTaskRelationLog : taskRelationLogs) 
{
-            processTaskRelations.add(processTaskRelationLog);
-        }
-        return processTaskRelations;
-    }
-
-    /**
      * generate ProcessData
      */
     public ProcessData genProcessData(ProcessDefinition processDefinition) {
-        List<TaskNode> taskNodes = genTaskNodeList(processDefinition.getCode()
-                , processDefinition.getVersion());
+        List<TaskNode> taskNodes = 
genTaskNodeList(processDefinition.getCode(), processDefinition.getVersion());
         ProcessData processData = new ProcessData();
         processData.setTasks(taskNodes);
         
processData.setGlobalParams(JSONUtils.toList(processDefinition.getGlobalParams(),
 Property.class));
@@ -2430,10 +2408,10 @@ public class ProcessService {
     }
 
     public List<TaskNode> genTaskNodeList(Long processCode, int 
processVersion) {
-        List<ProcessTaskRelation> processTaskRelations = 
this.getProcessTaskRelationList(processCode, processVersion);
+        List<ProcessTaskRelationLog> processTaskRelations = 
processTaskRelationLogMapper.queryByProcessCodeAndVersion(processCode, 
processVersion);
         Set<TaskDefinition> taskDefinitionSet = new HashSet<>();
         Map<Long, TaskNode> taskNodeMap = new HashMap<>();
-        for (ProcessTaskRelation processTaskRelation : processTaskRelations) {
+        for (ProcessTaskRelationLog processTaskRelation : 
processTaskRelations) {
             if (processTaskRelation.getPreTaskCode() > 0) {
                 taskDefinitionSet.add(new 
TaskDefinition(processTaskRelation.getPreTaskCode(), 
processTaskRelation.getPreNodeVersion()));
             }

Reply via email to