aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2021-12-20 10:15:33 +0000
committerChristopher Baines <mail@cbaines.net>2021-12-20 10:15:33 +0000
commit794ca2109ed544a134d264a6d0318e5ebdd200e6 (patch)
tree7c2b7f0fae1288e30d238cae02e37616693c7dbc /guix-build-coordinator/datastore
parent3a50380006bbe5b653f18f8b3d10ae0793820a1c (diff)
downloadbuild-coordinator-794ca2109ed544a134d264a6d0318e5ebdd200e6.tar
build-coordinator-794ca2109ed544a134d264a6d0318e5ebdd200e6.tar.gz
Log delays in fetch builds to allocate
Diffstat (limited to 'guix-build-coordinator/datastore')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm47
1 files changed, 27 insertions, 20 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 3ed79e8..581466a 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -2673,25 +2673,28 @@ WHERE build_derivation_outputs.derivation_id = :derivation_id
allocated_builds_derivation_outputs.output_id"
#:cache? #t)))
- (sqlite-bind-arguments
- statement
- #:agent_id agent-id)
-
- (let ((builds
- (sqlite-fold
- (lambda (row result)
- (cons
- (match row
- (#f #f)
- (#(uuid derivation_name)
- `((uuid . ,uuid)
- ;; TODO Switch this to derivation_name
- (derivation-name . ,derivation_name))))
- result))
- '()
- statement)))
- (sqlite-reset statement)
-
+ (define (get-builds)
+ (sqlite-bind-arguments
+ statement
+ #:agent_id agent-id)
+
+ (let ((builds
+ (sqlite-fold
+ (lambda (row result)
+ (cons
+ (match row
+ (#f #f)
+ (#(uuid derivation_name)
+ `((uuid . ,uuid)
+ ;; TODO Switch this to derivation_name
+ (derivation-name . ,derivation_name))))
+ result))
+ '()
+ statement)))
+ (sqlite-reset statement)
+ builds))
+
+ (define (get-first-non-conflicting-build builds)
(find (lambda (build-details)
(sqlite-bind-arguments
output-conflicts-statement
@@ -2706,7 +2709,11 @@ WHERE build_derivation_outputs.derivation_id = :derivation_id
(match result
(#f #t)
(_ #f))))
- builds))))
+ builds))
+
+ (let ((builds (call-with-delay-logging get-builds)))
+ (call-with-delay-logging get-first-non-conflicting-build
+ #:args (list builds)))))
#:readonly? #t))
(define-method (datastore-insert-to-allocated-builds