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);
}