mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-01-12 03:21:33 +00:00
consumer: make sure list is unlocked before queueing
This commit is contained in:
@@ -70,19 +70,25 @@ func (list *List) consumer() {
|
||||
task.wgTask.Done()
|
||||
list.wg.Done()
|
||||
|
||||
unlocked := false
|
||||
for _, t := range list.tasks {
|
||||
if t.State == IDLE {
|
||||
// check resources
|
||||
blockingTasks := list.usedResources.UsedBy(t.resources)
|
||||
if len(blockingTasks) == 0 {
|
||||
list.usedResources.MarkInUse(t.resources, t)
|
||||
// unlock list since queueing may block
|
||||
list.Unlock()
|
||||
unlocked = true
|
||||
list.queue <- t
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if !unlocked {
|
||||
list.Unlock()
|
||||
}
|
||||
}
|
||||
list.Unlock()
|
||||
}()
|
||||
|
||||
case <-list.queueDone:
|
||||
|
||||
Reference in New Issue
Block a user