diff options
author | Christopher Baines <mail@cbaines.net> | 2021-12-20 10:15:33 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2021-12-20 10:15:33 +0000 |
commit | 794ca2109ed544a134d264a6d0318e5ebdd200e6 (patch) | |
tree | 7c2b7f0fae1288e30d238cae02e37616693c7dbc /guix-build-coordinator/datastore/sqlite.scm | |
parent | 3a50380006bbe5b653f18f8b3d10ae0793820a1c (diff) | |
download | build-coordinator-794ca2109ed544a134d264a6d0318e5ebdd200e6.tar build-coordinator-794ca2109ed544a134d264a6d0318e5ebdd200e6.tar.gz |
Log delays in fetch builds to allocate
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 47 |
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 |