aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-05-17 19:25:51 +0100
committerChristopher Baines <mail@cbaines.net>2020-05-17 19:25:51 +0100
commit53e796239d6802cd8955a459dd523c55936a4444 (patch)
tree978540a91ae768da060362d72c7ca2e0be8c33cc
parent8053c67af3ad3d5a2467a6d12a06562df00c9969 (diff)
downloadbuild-coordinator-53e796239d6802cd8955a459dd523c55936a4444.tar
build-coordinator-53e796239d6802cd8955a459dd523c55936a4444.tar.gz
Change how triggering build allocations works
Associate this with the coordinator, rather than having the logic in the agent communication code.
-rw-r--r--guix-build-coordinator/agent-messaging/http.scm9
-rw-r--r--guix-build-coordinator/coordinator.scm25
-rw-r--r--scripts/guix-build-coordinator.in7
3 files changed, 22 insertions, 19 deletions
diff --git a/guix-build-coordinator/agent-messaging/http.scm b/guix-build-coordinator/agent-messaging/http.scm
index b5cd478..d22cf5c 100644
--- a/guix-build-coordinator/agent-messaging/http.scm
+++ b/guix-build-coordinator/agent-messaging/http.scm
@@ -78,8 +78,7 @@ if there was no request body."
(define (http-agent-messaging-start-server port host secret-key-base
build-coordinator
- chunked-request-channel
- trigger-build-allocation)
+ chunked-request-channel)
(define update-base-datastore-metrics!
(base-datastore-metrics-updater build-coordinator))
@@ -99,7 +98,6 @@ if there was no request body."
body
secret-key-base
build-coordinator
- trigger-build-allocation
chunked-request-channel
update-base-datastore-metrics!)))
#:host host
@@ -215,7 +213,6 @@ port. Also, the port used can be changed by passing the --port option.\n"
body
secret-key-base
build-coordinator
- trigger-build-allocation
chunked-request-channel
update-base-datastore-metrics!)
(define (authenticated? uuid request)
@@ -278,7 +275,7 @@ port. Also, the port used can be changed by passing the --port option.\n"
(json-string->scm (utf8->string body)))
;; Trigger build allocation, as the result of this build
;; could change the allocation
- (trigger-build-allocation)
+ (trigger-build-allocation build-coordinator)
(render-json
"message received"))
(render-json
@@ -295,7 +292,7 @@ port. Also, the port used can be changed by passing the --port option.\n"
(json-string->scm (utf8->string body)))
;; Trigger build allocation, so that the allocator can handle
;; this setup failure
- (trigger-build-allocation)
+ (trigger-build-allocation build-coordinator)
(render-json
"message received"))
(render-json
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm
index 5b57823..f0987a4 100644
--- a/guix-build-coordinator/coordinator.scm
+++ b/guix-build-coordinator/coordinator.scm
@@ -47,7 +47,7 @@
new-agent-password
fetch-builds
agent-details
- make-build-allocator-thread
+ trigger-build-allocation
start-hook-processing-thread
build-output-file-location
@@ -62,23 +62,29 @@
(datastore build-coordinator-datastore)
(hooks build-coordinator-hooks)
(metrics-registry build-coordinator-metrics-registry)
- (allocation-strategy build-coordinator-allocation-strategy))
+ (allocation-strategy build-coordinator-allocation-strategy)
+ (allocator-thread build-coordinator-allocator-thread
+ set-build-coordinator-allocator-thread!))
(define* (make-build-coordinator #:key datastore hooks
(metrics-registry (make-metrics-registry))
(allocation-strategy
basic-build-allocation-strategy))
- (make-build-coordinator-record
- datastore
- hooks
- metrics-registry
- allocation-strategy))
+ (let ((build-coordinator
+ (make-build-coordinator-record datastore
+ hooks
+ metrics-registry
+ allocation-strategy)))
+ (set-build-coordinator-allocator-thread!
+ build-coordinator
+ (make-build-allocator-thread build-coordinator))
+
+ build-coordinator))
(define* (submit-build build-coordinator derivation
#:key
requested-uuid
(priority 0)
- (defer-allocation? #f)
(ensure-all-related-derivation-outputs-have-builds? #f))
(let ((datastore (build-coordinator-datastore build-coordinator))
(uuid (or requested-uuid (random-v4-uuid))))
@@ -136,6 +142,9 @@
password)
password))
+(define (trigger-build-allocation build-coordinator)
+ ((build-coordinator-allocator-thread build-coordinator)))
+
(define (allocate-builds build-coordinator)
(define datastore
(build-coordinator-datastore build-coordinator))
diff --git a/scripts/guix-build-coordinator.in b/scripts/guix-build-coordinator.in
index c7267e9..41f1ff3 100644
--- a/scripts/guix-build-coordinator.in
+++ b/scripts/guix-build-coordinator.in
@@ -426,9 +426,7 @@ processed?: ~A
;; restore original C handler.
(sigaction SIGINT #f))))))
- (let* ((trigger-build-allocation
- (make-build-allocator-thread build-coordinator))
- (agent-communication-thunk
+ (let* ((agent-communication-thunk
(let ((agent-communication-uri
(string->uri (assq-ref opts 'agent-communication))))
(match (uri-scheme agent-communication-uri)
@@ -448,8 +446,7 @@ processed?: ~A
host
(assq-ref opts 'secret-key-base)
build-coordinator
- chunked-request-channel
- trigger-build-allocation))))))))
+ chunked-request-channel)))))))
(start-hook-processing-thread build-coordinator)
(trigger-build-allocation build-coordinator)