aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/coordinator.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2023-04-21 16:19:24 +0100
committerChristopher Baines <mail@cbaines.net>2023-04-21 16:19:24 +0100
commitc0540457692e87fc8752a82bdaca9ce8167914db (patch)
treeb6a81fb26c427d980ee03232c1ee9ddfff689c71 /guix-build-coordinator/coordinator.scm
parente135098282c78f03a2c9a037a19319dde0185814 (diff)
downloadbuild-coordinator-c0540457692e87fc8752a82bdaca9ce8167914db.tar
build-coordinator-c0540457692e87fc8752a82bdaca9ce8167914db.tar.gz
Deallocate canceled builds from agents when they startup
Diffstat (limited to 'guix-build-coordinator/coordinator.scm')
-rw-r--r--guix-build-coordinator/coordinator.scm27
1 files changed, 23 insertions, 4 deletions
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm
index d7bc605..b8a93d4 100644
--- a/guix-build-coordinator/coordinator.scm
+++ b/guix-build-coordinator/coordinator.scm
@@ -825,11 +825,30 @@
active?)
(trigger-build-allocation coordinator))
-(define (update-agent-status coordinator agent-uuid
- status 1min-load-average
- processor-count)
+(define* (update-agent-status coordinator agent-uuid
+ status 1min-load-average
+ processor-count
+ #:key initial-status-update?)
+ (define datastore
+ (build-coordinator-datastore coordinator))
+
+ (when initial-status-update?
+ (datastore-call-with-transaction
+ datastore
+ (lambda _
+ (for-each
+ (lambda (build)
+ (when (assq-ref build 'canceled)
+ (datastore-remove-build-allocation
+ datastore
+ (assq-ref build 'uuid)
+ agent-uuid)))
+ (datastore-list-agent-builds
+ datastore
+ agent-uuid)))))
+
(datastore-update-agent-status
- (build-coordinator-datastore coordinator)
+ datastore
agent-uuid
status
1min-load-average