diff options
author | Christopher Baines <mail@cbaines.net> | 2021-01-26 20:37:49 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2021-01-26 20:37:49 +0000 |
commit | b68b90bc392eed3387b07d22eb3f7a5c7125db8d (patch) | |
tree | 5200b55fee9beb035cbc2819c129402d597a8fc3 /guix-build-coordinator/build-allocator.scm | |
parent | 7683567622ccd6bbde789bfa608811c44c47c96a (diff) | |
download | build-coordinator-b68b90bc392eed3387b07d22eb3f7a5c7125db8d.tar build-coordinator-b68b90bc392eed3387b07d22eb3f7a5c7125db8d.tar.gz |
Try to simplify part of the basic allocator
As there has been exceptions in this area, the required build priority is #f.
Diffstat (limited to 'guix-build-coordinator/build-allocator.scm')
-rw-r--r-- | guix-build-coordinator/build-allocator.scm | 59 |
1 files changed, 33 insertions, 26 deletions
diff --git a/guix-build-coordinator/build-allocator.scm b/guix-build-coordinator/build-allocator.scm index 917a567..6007708 100644 --- a/guix-build-coordinator/build-allocator.scm +++ b/guix-build-coordinator/build-allocator.scm @@ -307,25 +307,25 @@ (append ready-builds (push-deferred-builds-to-the-back other-builds)))) - (define (treat-build-as-required build-id required-build-id priority) - (let ((required-build-derived-priority - (hash-ref derived-build-priorities-hash - required-build-id))) - ;; Add an entry to the build-ordering-hints-hash to indicate that - ;; required-build-id should happen prior to build-id - (hash-set! - build-ordering-hints-hash - build-id - (cons required-build-id - (hash-ref build-ordering-hints-hash - build-id - '()))) - - (when (> priority required-build-derived-priority) - ;; Bump the priority of the build - (hash-set! derived-build-priorities-hash - required-build-id - priority)))) + (define (treat-build-as-required build-id + priority + required-build-id + required-build-derived-priority) + ;; Add an entry to the build-ordering-hints-hash to indicate that + ;; required-build-id should happen prior to build-id + (hash-set! + build-ordering-hints-hash + build-id + (cons required-build-id + (hash-ref build-ordering-hints-hash + build-id + '()))) + + (when (> priority required-build-derived-priority) + ;; Bump the priority of the build + (hash-set! derived-build-priorities-hash + required-build-id + priority))) (when metrics-registry (metric-set allocator-considered-builds-metric @@ -363,16 +363,23 @@ (begin (for-each (lambda (build) - (when (and (not (assq-ref build 'processed)) + (let* ((required-build-id + (assq-ref build 'uuid)) + (required-build-derived-priority + (hash-ref derived-build-priorities-hash + required-build-id))) + (when + (and (not (assq-ref build 'processed)) ;; The build might not be included ;; in this allocation, so skip it ;; if it isn't - (hash-ref derived-build-priorities-hash - (assq-ref build 'uuid))) - (treat-build-as-required - setup-failure-build-id - (assq-ref build 'uuid) - setup-failure-build-derived-priority))) + (number? + required-build-derived-priority)) + (treat-build-as-required + setup-failure-build-id + setup-failure-build-derived-priority + required-build-id + required-build-derived-priority)))) builds) #f)))) (datastore-list-setup-failure-missing-inputs |