in internal/dal/workflow.go [555:580]
func (w *workflowDALImpl) fillInstanceCount(workflows []model.Workflow) error {
var handlers []func() error
for idx := range workflows {
idx := idx
handlers = append(handlers, func() error {
var instances []model.WorkflowInstance
if err := workflowDB.Where("workflow_id = ?", workflows[idx].WorkflowID).
Where("workflow_status != ?", constants.InvalidStatus).Find(&instances).Error; err != nil {
return err
}
if len(instances) == 0 {
return nil
}
workflows[idx].TotalInstances = len(instances)
for _, instance := range instances {
if instance.WorkflowStatus == constants.TaskInstanceFailStatus {
workflows[idx].TotalFailedInstances++
} else {
workflows[idx].TotalRunningInstances++
}
}
return nil
})
}
return util.GoAndWait(handlers...)
}