aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/build-allocator.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator/build-allocator.scm')
-rw-r--r--guix-build-coordinator/build-allocator.scm21
1 files changed, 12 insertions, 9 deletions
diff --git a/guix-build-coordinator/build-allocator.scm b/guix-build-coordinator/build-allocator.scm
index f2db2b5..f24aa04 100644
--- a/guix-build-coordinator/build-allocator.scm
+++ b/guix-build-coordinator/build-allocator.scm
@@ -87,13 +87,16 @@
(define systems-for-builds
;; TODO Should be one query
- (map (lambda (build)
- (let ((build-id (assq-ref build 'uuid)))
- (cons build-id
- (datastore-find-build-derivation-system
- datastore
- build-id))))
- builds))
+ (let ((table (make-hash-table builds-count)))
+ (for-each (lambda (build)
+ (let ((build-id (assq-ref build 'uuid)))
+ (hash-set! table
+ build-id
+ (datastore-find-build-derivation-system
+ datastore
+ build-id))))
+ builds)
+ table))
(define (filter-builds-for-agent agent-id)
(define requested-systems
@@ -126,8 +129,8 @@
(log "build:" (assq-ref build 'uuid))
(and
(or (null? requested-systems)
- (let ((build-system (assoc-ref systems-for-builds
- (assq-ref build 'uuid))))
+ (let ((build-system (hash-ref systems-for-builds
+ (assq-ref build 'uuid))))
(member build-system requested-systems)))
(let* ((build-id (assq-ref build 'uuid))
(setup-failures-for-build