aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/build-allocator.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2021-01-26 20:37:49 +0000
committerChristopher Baines <mail@cbaines.net>2021-01-26 20:37:49 +0000
commitb68b90bc392eed3387b07d22eb3f7a5c7125db8d (patch)
tree5200b55fee9beb035cbc2819c129402d597a8fc3 /guix-build-coordinator/build-allocator.scm
parent7683567622ccd6bbde789bfa608811c44c47c96a (diff)
downloadbuild-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.scm59
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