diff options
-rw-r--r-- | guix-build-coordinator/build-allocator.scm | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/guix-build-coordinator/build-allocator.scm b/guix-build-coordinator/build-allocator.scm index 990e718..70aa59c 100644 --- a/guix-build-coordinator/build-allocator.scm +++ b/guix-build-coordinator/build-allocator.scm @@ -20,6 +20,7 @@ (define-module (guix-build-coordinator build-allocator) #:use-module (srfi srfi-1) + #:use-module (ice-9 match) #:use-module (guix memoization) #:use-module (guix-build-coordinator datastore) #:use-module (guix-build-coordinator coordinator) @@ -298,12 +299,13 @@ (mlambda (output) (datastore-list-builds-for-output datastore output))) - (define priority-ordered-unprocessed-builds - (datastore-list-unprocessed-builds datastore)) - (let* ((agents (datastore-list-agents datastore)) (setup-failures-hash (datastore-fetch-setup-failures datastore)) + (priority-ordered-unprocessed-builds + (datastore-list-unprocessed-builds datastore)) + (input-builds-for-unprocessed-builds + (datastore-fetch-input-builds-for-unprocessed-builds datastore)) (derived-build-priorities-hash ;; Mapping from build_id to priority, initialised at the individual ;; priorities for the builds @@ -363,20 +365,20 @@ (define processable-builds (filter (lambda (build) - (every (lambda (derivation-input-details) - (let ((builds (cached/list-builds-for-output - (assq-ref derivation-input-details - 'output)))) - (if (any (lambda (output-build) - (string=? (or (assq-ref output-build 'result) - "unknown") - "success")) - builds) - #t - #f))) - (datastore-find-derivation-inputs - datastore - (assq-ref build 'derivation-name)))) + (let ((input-builds-by-output + (hash-ref input-builds-for-unprocessed-builds + (assq-ref build 'uuid)))) + (and + input-builds-by-output + (every (match-lambda + ((output . builds) + (if (any (lambda (output-build) + (string=? (assq-ref output-build 'result) + "success")) + builds) + #t + #f))) + input-builds-by-output)))) priority-ordered-unprocessed-builds)) (for-each (lambda (build) |