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

abeizn pushed a commit to branch release-v1.0
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit 7d7880e61e0d965459e7ef1a82363fa42760f138
Author: abeizn <[email protected]>
AuthorDate: Thu Mar 28 20:40:53 2024 +0800

    fix: upgrade tasks sort logic (#7239)
---
 backend/server/services/task.go | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/backend/server/services/task.go b/backend/server/services/task.go
index 9ad7494a4..e01b0b225 100644
--- a/backend/server/services/task.go
+++ b/backend/server/services/task.go
@@ -332,23 +332,23 @@ func GetSubTasksInfo(pipelineId uint64, shouldSanitize 
bool, tx dal.Dal) (*model
 // filterTasksWithLastStatus returns the latest task for each plugin
 func filterTasksWithLastStatus(tasks []*models.Task) []*models.Task {
        taskMap := make(map[string]*models.Task)
-       sortedTasks := tasks
        for _, task := range tasks {
-               if existingTask, ok := taskMap[task.Plugin]; ok {
+               key := fmt.Sprintf("%d-%d-%d", task.PipelineId, 
task.PipelineRow, task.PipelineCol)
+               if existingTask, ok := taskMap[key]; ok {
                        if task.BeganAt != nil && (existingTask.BeganAt == nil 
|| task.BeganAt.After(*existingTask.BeganAt)) {
-                               taskMap[task.Plugin] = task
+                               taskMap[key] = task
                        }
                } else {
-                       taskMap[task.Plugin] = task
+                       taskMap[key] = task
                }
        }
 
        var filteredTasks []*models.Task
-       for _, task := range taskMap {
-               filteredTasks = append(filteredTasks, task)
-       }
-       for i, task := range sortedTasks {
-               filteredTasks[i] = taskMap[task.Plugin]
+       for _, task := range tasks {
+               key := fmt.Sprintf("%d-%d-%d", task.PipelineId, 
task.PipelineRow, task.PipelineCol)
+               if filteredTask, ok := taskMap[key]; ok {
+                       filteredTasks = append(filteredTasks, filteredTask)
+               }
        }
 
        return filteredTasks

Reply via email to