diff options
author | Christopher Baines <mail@cbaines.net> | 2023-04-21 16:19:24 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2023-04-21 16:19:24 +0100 |
commit | c0540457692e87fc8752a82bdaca9ce8167914db (patch) | |
tree | b6a81fb26c427d980ee03232c1ee9ddfff689c71 /guix-build-coordinator/coordinator.scm | |
parent | e135098282c78f03a2c9a037a19319dde0185814 (diff) | |
download | build-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.scm | 27 |
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 |