aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-05-21 22:05:30 +0100
committerChristopher Baines <mail@cbaines.net>2020-05-21 22:05:30 +0100
commitf3475b5b015e14aaf63e42bc4332d7c8067c96bc (patch)
tree26e91d599a63a36f61c06c372ab675b4fa7eebab
parentfaaae80a4f10667407c34c4df56382260d5dd702 (diff)
downloadbuild-coordinator-f3475b5b015e14aaf63e42bc4332d7c8067c96bc.tar
build-coordinator-f3475b5b015e14aaf63e42bc4332d7c8067c96bc.tar.gz
Make sure to count all the jobs
Otherwise jobs could be fetched needlessly.
-rw-r--r--guix-build-coordinator/agent.scm8
-rw-r--r--guix-build-coordinator/utils.scm7
2 files changed, 8 insertions, 7 deletions
diff --git a/guix-build-coordinator/agent.scm b/guix-build-coordinator/agent.scm
index 20bd74a..e316b7b 100644
--- a/guix-build-coordinator/agent.scm
+++ b/guix-build-coordinator/agent.scm
@@ -82,7 +82,7 @@
(assoc-ref build "uuid")
pre-build-status))))))
- (let-values (((process-job-with-queue count-running-jobs)
+ (let-values (((process-job-with-queue count-jobs)
(create-work-queue max-parallel-builds
process-job)))
(let ((details (submit-status coordinator-uri uuid password 'idle)))
@@ -93,9 +93,9 @@
builds)))
(while #t
- (let ((running-jobs (count-running-jobs)))
- (when (< running-jobs max-parallel-builds)
- (match (fetch-new-jobs (- max-parallel-builds running-jobs))
+ (let ((jobs (count-jobs)))
+ (when (< jobs max-parallel-builds)
+ (match (fetch-new-jobs (- max-parallel-builds jobs))
(()
;; No new jobs available
(sleep 30))
diff --git a/guix-build-coordinator/utils.scm b/guix-build-coordinator/utils.scm
index f605f7f..a0d8df3 100644
--- a/guix-build-coordinator/utils.scm
+++ b/guix-build-coordinator/utils.scm
@@ -530,9 +530,10 @@ References: ~a~%"
(enq! queue args)
(signal-condition-variable job-available)))
- (define (count-running-jobs)
+ (define (count-jobs)
(with-mutex queue-mutex
- running-jobs-count))
+ (+ (q-length queue)
+ running-jobs-count)))
(for-each
(lambda (i)
@@ -559,4 +560,4 @@ References: ~a~%"
(loop)))))
(iota thread-count))
- (values process-job count-running-jobs)))
+ (values process-job count-jobs)))