diff options
author | Christopher Baines <mail@cbaines.net> | 2020-06-19 16:55:01 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-06-19 16:55:01 +0100 |
commit | 89c2823f1a332da9e9ea3a4f84ef27cce7e22a3a (patch) | |
tree | c58d0c732100c67e71fee2e5438154153c374fc7 /guix-build-coordinator/datastore/sqlite.scm | |
parent | d1d8132c6f8c0fb4d2335472d487635e0284cdf6 (diff) | |
download | build-coordinator-89c2823f1a332da9e9ea3a4f84ef27cce7e22a3a.tar build-coordinator-89c2823f1a332da9e9ea3a4f84ef27cce7e22a3a.tar.gz |
Handle the system more explicitly when fetching builds
Also support fetching builds for specific systems from the Guix Data Service.
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index 2b39c51..0497bab 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -1286,20 +1286,24 @@ SELECT agent_id, COUNT(*) FROM allocated_builds GROUP BY agent_id"))) (define-method (datastore-allocate-builds-to-agent (datastore <sqlite-datastore>) agent-id + systems count) (define (fetch-build db) (let ((statement (sqlite-prepare db ;; This needs to guard against the plan being out of date - " + (simple-format #f " SELECT builds.uuid, builds.derivation_name FROM builds INNER JOIN build_allocation_plan ON builds.uuid = build_allocation_plan.build_id +INNER JOIN derivations + ON builds.derivation_name = derivations.name WHERE build_allocation_plan.agent_id = :agent_id AND builds.processed = 0 AND builds.uuid NOT IN (SELECT build_id FROM allocated_builds) + AND derivations.system IN (~A) AND NOT EXISTS ( SELECT 1 FROM derivation_outputs AS build_derivation_outputs @@ -1315,8 +1319,12 @@ WHERE build_allocation_plan.agent_id = :agent_id allocated_builds_derivation_outputs.output ) ORDER BY build_allocation_plan.ordering ASC -LIMIT 1"))) - +LIMIT 1" + (string-join + (map (lambda (system) + (string-append "'" system "'")) + systems) + ","))))) (sqlite-bind-arguments statement #:agent_id agent-id) |