aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/coordinator.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2021-02-06 10:35:24 +0000
committerChristopher Baines <mail@cbaines.net>2021-02-06 10:35:24 +0000
commitb44a9f373c42b58cadcb6791d85960dbee0bb98b (patch)
tree787955e3cf83f989940f3118123c935bfcd56134 /guix-build-coordinator/coordinator.scm
parent6341d714dd28e7f09773cd28b5801c71d11318b1 (diff)
downloadbuild-coordinator-b44a9f373c42b58cadcb6791d85960dbee0bb98b.tar
build-coordinator-b44a9f373c42b58cadcb6791d85960dbee0bb98b.tar.gz
Trigger build allocations when necessary for deferred builds
Diffstat (limited to 'guix-build-coordinator/coordinator.scm')
-rw-r--r--guix-build-coordinator/coordinator.scm25
1 files changed, 25 insertions, 0 deletions
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm
index 06b5a40..b345498 100644
--- a/guix-build-coordinator/coordinator.scm
+++ b/guix-build-coordinator/coordinator.scm
@@ -226,6 +226,8 @@
(datastore-spawn-fibers
(build-coordinator-datastore build-coordinator))
+ (spawn-fiber-to-watch-for-deferred-builds build-coordinator)
+
;; Start the agent messaging server
(match (uri-scheme agent-communication-uri)
('http
@@ -496,6 +498,29 @@
trigger-build-allocation)
+(define (spawn-fiber-to-watch-for-deferred-builds coordinator)
+ (spawn-fiber
+ (lambda ()
+ (while #t
+ (sleep 60) ; 1 minute
+ (with-exception-handler
+ (lambda (exn)
+ (simple-format (current-error-port)
+ "exception when watching for deferred builds: ~A\n"
+ exn))
+ (lambda ()
+ (let ((first-deferred-build
+ (datastore-find-first-unallocated-deferred-build
+ (build-coordinator-datastore coordinator))))
+ (when (and first-deferred-build
+ (time<=? (date->time-utc
+ (assq-ref first-deferred-build 'deferred-until))
+ (current-time)))
+ (simple-format #t "guix-build-coordinator: triggering build allocation for deferred build: ~A\n" (assq-ref first-deferred-build 'uuid))
+ (trigger-build-allocation coordinator))))
+ #:unwind? #t)))
+ #:parallel? #t))
+
(define (start-hook-processing-threads build-coordinator)
(define wait-timeout-seconds (* 60 5))