Skip to content

Commit bc99575

Browse files
mgduoduogq47193
andauthored
[DS-7256][refactor] Optimization for task instances query (#7331)
- assemble a Map<Long, User> outside of the loop instead of the query inside Co-authored-by: gq47193 <gq47193@ly.com>
1 parent 6b5c393 commit bc99575

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import java.util.List;
4343
import java.util.Map;
4444
import java.util.Set;
45+
import java.util.stream.Collectors;
4546

4647
import org.springframework.beans.factory.annotation.Autowired;
4748
import org.springframework.stereotype.Service;
@@ -137,12 +138,13 @@ public Result queryTaskListPaging(User loginUser,
137138
exclusionSet.add(Constants.CLASS);
138139
exclusionSet.add("taskJson");
139140
List<TaskInstance> taskInstanceList = taskInstanceIPage.getRecords();
140-
141+
List<Integer> executorIds = taskInstanceList.stream().map(TaskInstance::getExecutorId).distinct().collect(Collectors.toList());
142+
List<User> users = usersService.queryUser(executorIds);
143+
Map<Integer, User> userMap = users.stream().collect(Collectors.toMap(User::getId, v -> v));
141144
for (TaskInstance taskInstance : taskInstanceList) {
142145
taskInstance.setDuration(DateUtils.format2Duration(taskInstance.getStartTime(), taskInstance.getEndTime()));
143-
User executor = usersService.queryUser(taskInstance.getExecutorId());
144-
if (null != executor) {
145-
taskInstance.setExecutorName(executor.getUserName());
146+
if (userMap.containsKey(taskInstance.getExecutorId())) {
147+
taskInstance.setExecutorName(userMap.get(taskInstance.getExecutorId()).getUserName());
146148
}
147149
}
148150
pageInfo.setTotal((int) taskInstanceIPage.getTotal());

0 commit comments

Comments
 (0)