X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/baf7a940be8927278e3b4b87e7366cebfc16532f..5a93b6124068c2a8748fc0bfbb2a2d151815bcf0:/build_queue.go?ds=sidebyside diff --git a/build_queue.go b/build_queue.go index 53e804d..7db24be 100644 --- a/build_queue.go +++ b/build_queue.go @@ -82,8 +82,10 @@ func (q *BuildQueue) Next() (NodeKey, bool) { // Done removes a built node from the queue. func (q *BuildQueue) Done(key NodeKey) { delete(q.running, key) + if key.level > 0 { delete(q.queued, key) + return } @@ -96,6 +98,7 @@ func (q *BuildQueue) Done(key NodeKey) { // Fail keeps a node in the queue, but it cannot start until Retry. func (q *BuildQueue) Fail(key NodeKey) { delete(q.running, key) + if key.level > 0 { q.retry = append(q.retry, key) return @@ -107,6 +110,7 @@ func (q *BuildQueue) Fail(key NodeKey) { // Retry lets the failed nodes start again. func (q *BuildQueue) Retry() { clear(q.failed) + for _, key := range q.retry { heap.Push(&q.merges, key) }