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

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


The following commit(s) were added to refs/heads/3.0.2-prepare by this push:
     new 0aff74f5b0 [Improvement] Avoid using search in for and start using 
testSaveTaskDefine (#11383) (#12773)
0aff74f5b0 is described below

commit 0aff74f5b0c95df6435e02f67032b18b0e3ba990
Author: Eric Gao <[email protected]>
AuthorDate: Mon Nov 7 16:00:54 2022 +0800

    [Improvement] Avoid using search in for and start using testSaveTaskDefine 
(#11383) (#12773)
    
    Co-authored-by: zhangshunmin <[email protected]>
    Co-authored-by: longtb <[email protected]>
    Co-authored-by: zhangshunmin <[email protected]>
---
 .../service/process/ProcessServiceImpl.java        | 29 ++++++++++++++--------
 .../service/process/ProcessServiceTest.java        |  8 +++++-
 2 files changed, 26 insertions(+), 11 deletions(-)

diff --git 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java
 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java
index 8d210ac33b..81a70939ac 100644
--- 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java
+++ 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java
@@ -2509,17 +2509,26 @@ public class ProcessServiceImpl implements 
ProcessService {
         }
         int insertResult = 0;
         int updateResult = 0;
-        for (TaskDefinitionLog taskDefinitionToUpdate : 
updateTaskDefinitionLogs) {
-            TaskDefinition task = 
taskDefinitionMapper.queryByCode(taskDefinitionToUpdate.getCode());
-            if (task == null) {
-                newTaskDefinitionLogs.add(taskDefinitionToUpdate);
-            } else {
-                insertResult += 
taskDefinitionLogMapper.insert(taskDefinitionToUpdate);
-                if (Boolean.TRUE.equals(syncDefine)) {
-                    taskDefinitionToUpdate.setId(task.getId());
-                    updateResult += 
taskDefinitionMapper.updateById(taskDefinitionToUpdate);
+        if (!updateTaskDefinitionLogs.isEmpty()) {
+            List<TaskDefinition> taskDefinitions = 
taskDefinitionMapper.queryByCodeList(updateTaskDefinitionLogs.stream().map(TaskDefinition::getCode).distinct().collect(Collectors.toList()));
+            for (TaskDefinitionLog taskDefinitionToUpdate : 
updateTaskDefinitionLogs) {
+                TaskDefinition task = null;
+                for (TaskDefinition taskDefinition : taskDefinitions) {
+                    if (taskDefinitionToUpdate.getCode() == 
taskDefinition.getCode()) {
+                        task = taskDefinition;
+                        break;
+                    }
+                }
+                if (task == null) {
+                    newTaskDefinitionLogs.add(taskDefinitionToUpdate);
                 } else {
-                    updateResult++;
+                    insertResult += 
taskDefinitionLogMapper.insert(taskDefinitionToUpdate);
+                    if (Boolean.TRUE.equals(syncDefine)) {
+                        taskDefinitionToUpdate.setId(task.getId());
+                        updateResult += 
taskDefinitionMapper.updateById(taskDefinitionToUpdate);
+                    } else {
+                        updateResult++;
+                    }
                 }
             }
         }
diff --git 
a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java
 
b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java
index 82dc3f4673..6933f060c6 100644
--- 
a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java
+++ 
b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java
@@ -78,6 +78,7 @@ import 
org.apache.dolphinscheduler.plugin.task.api.enums.dp.ValueType;
 import org.apache.dolphinscheduler.plugin.task.api.model.ResourceInfo;
 import org.apache.dolphinscheduler.service.exceptions.ServiceException;
 import org.apache.dolphinscheduler.service.quartz.cron.CronUtilsTest;
+import org.apache.dolphinscheduler.service.task.TaskPluginManager;
 import org.apache.dolphinscheduler.spi.params.base.FormType;
 
 import java.util.ArrayList;
@@ -162,6 +163,9 @@ public class ProcessServiceTest {
     @Mock
     private ScheduleMapper scheduleMapper;
 
+    @Mock
+    TaskPluginManager taskPluginManager;
+
     @Test
     public void testCreateSubCommand() {
         ProcessInstance parentInstance = new ProcessInstance();
@@ -671,6 +675,7 @@ public class ProcessServiceTest {
         return list;
     }
 
+    @Test
     public void testSaveTaskDefine() {
         User operator = new User();
         operator.setId(-1);
@@ -695,9 +700,10 @@ public class ProcessServiceTest {
         taskDefinition.setVersion(1);
         taskDefinition.setCreateTime(new Date());
         taskDefinition.setUpdateTime(new Date());
+        Mockito.when(taskPluginManager.getParameters(any())).thenReturn(null);
         
Mockito.when(taskDefinitionLogMapper.queryByDefinitionCodeAndVersion(taskDefinition.getCode(),
 taskDefinition.getVersion())).thenReturn(taskDefinition);
         
Mockito.when(taskDefinitionLogMapper.queryMaxVersionForDefinition(taskDefinition.getCode())).thenReturn(1);
-        
Mockito.when(taskDefinitionMapper.queryByCode(taskDefinition.getCode())).thenReturn(taskDefinition);
+        
Mockito.when(taskDefinitionMapper.queryByCodeList(Collections.singletonList(taskDefinition.getCode()))).thenReturn(Collections.singletonList(taskDefinition));
         int result = processService.saveTaskDefine(operator, projectCode, 
taskDefinitionLogs, Boolean.TRUE);
         Assert.assertEquals(0, result);
     }

Reply via email to