Skip to content

Commit f2ce5db

Browse files
committed
fix(be): tasks order when max parallel tasks provided
1 parent 61ef397 commit f2ce5db

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

services/tasks/TaskPool.go

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"github.com/semaphoreui/semaphore/pkg/random"
77
"regexp"
8+
"slices"
89
"strconv"
910
"strings"
1011
"time"
@@ -165,21 +166,45 @@ func (p *TaskPool) Run() {
165166
break
166167
}
167168

168-
//get TaskRunner from top of queue
169-
t := p.Queue[0]
170-
if t.Task.Status == task_logger.TaskFailStatus {
171-
//delete failed TaskRunner from queue
172-
p.Queue = p.Queue[1:]
173-
log.Info("Task " + strconv.Itoa(t.Task.ID) + " removed from queue")
169+
var t *TaskRunner
170+
171+
for i := range p.Queue {
172+
curr := p.Queue[i]
173+
174+
if curr.Task.Status == task_logger.TaskFailStatus {
175+
//delete failed TaskRunner from queue
176+
p.Queue = slices.Delete(p.Queue, i, i+1)
177+
log.Info("Task " + strconv.Itoa(curr.Task.ID) + " removed from queue")
178+
continue
179+
}
180+
181+
if p.blocks(curr) {
182+
continue
183+
}
184+
185+
t = curr
174186
break
175187
}
176188

177-
if p.blocks(t) {
178-
//move blocked TaskRunner to end of queue
179-
p.Queue = append(p.Queue[1:], t)
189+
if t == nil {
180190
break
181191
}
182192

193+
////get TaskRunner from top of queue
194+
//t := p.Queue[0]
195+
//if t.Task.Status == task_logger.TaskFailStatus {
196+
// //delete failed TaskRunner from queue
197+
// p.Queue = p.Queue[1:]
198+
// log.Info("Task " + strconv.Itoa(t.Task.ID) + " removed from queue")
199+
// break
200+
//}
201+
//
202+
//if p.blocks(t) {
203+
// //move blocked TaskRunner to end of queue
204+
// //p.Queue = append(p.Queue[1:], t)
205+
// break
206+
//}
207+
183208
log.Info("Set resource locker with TaskRunner " + strconv.Itoa(t.Task.ID))
184209
p.resourceLocker <- &resourceLock{lock: true, holder: t}
185210

0 commit comments

Comments
 (0)