File tree Expand file tree Collapse file tree 1 file changed +34
-9
lines changed Expand file tree Collapse file tree 1 file changed +34
-9
lines changed Original file line number Diff line number Diff line change 5
5
"fmt"
6
6
"github.com/semaphoreui/semaphore/pkg/random"
7
7
"regexp"
8
+ "slices"
8
9
"strconv"
9
10
"strings"
10
11
"time"
@@ -165,21 +166,45 @@ func (p *TaskPool) Run() {
165
166
break
166
167
}
167
168
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
174
186
break
175
187
}
176
188
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 {
180
190
break
181
191
}
182
192
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
+
183
208
log .Info ("Set resource locker with TaskRunner " + strconv .Itoa (t .Task .ID ))
184
209
p .resourceLocker <- & resourceLock {lock : true , holder : t }
185
210
You can’t perform that action at this time.
0 commit comments