Support customising the latest branch revision max processes

This makes it possible to set a higher or lower value depending on what you
want.
This commit is contained in:
Christopher Baines 2020-02-28 20:58:21 +00:00
parent 185ba36853
commit 65f2f21d3a
2 changed files with 24 additions and 12 deletions

View file

@ -24,7 +24,8 @@
default-max-processes))
(define* (process-jobs conn #:key max-processes)
(define* (process-jobs conn #:key max-processes
latest-branch-revision-max-processes)
(define (fetch-new-jobs)
(fetch-unlocked-jobs conn))
@ -44,7 +45,9 @@
(process-jobs-concurrently fetch-new-jobs
process-job
handle-job-failure
#:max-processes max-processes))
#:max-processes max-processes
#:priority-max-processes
latest-branch-revision-max-processes))
(define default-max-processes
(max (round (/ (current-processor-count)
@ -55,12 +58,15 @@
(* (* 60 60) ;; 1 hour in seconds
24))
(define* (process-jobs-concurrently fetch-new-jobs
process-job
handle-job-failure
#:key (max-processes
default-max-processes)
(timeout default-timeout))
(define* (process-jobs-concurrently
fetch-new-jobs
process-job
handle-job-failure
#:key
(max-processes default-max-processes)
(priority-max-processes (* 2 max-processes))
(timeout default-timeout))
(define processes
(make-hash-table))
@ -156,9 +162,7 @@
(hash-count (const #t) processes)))
(when (< current-processes
(if priority?
;; For priority jobs, burst up to twice the number
;; of max processes
(* 2 max-processes)
priority-max-processes
max-processes))
(fork-and-process-job (list job-id))))))
jobs)))

View file

@ -35,6 +35,11 @@
(list (option '("max-processes") #t #f
(lambda (opt name arg result)
(alist-cons 'max-processes
(string->number arg)
result)))
(option '("latest-branch-revision-max-processes") #t #f
(lambda (opt name arg result)
(alist-cons 'latest-branch-revision-max-processes
(string->number arg)
result)))))
@ -62,4 +67,7 @@
(lambda (conn)
(simple-format #t "Ready to process jobs...\n")
(process-jobs conn
#:max-processes (assq-ref opts 'max-processes)))))
#:max-processes (assq-ref opts 'max-processes)
#:latest-branch-revision-max-processes
(or (assq-ref opts 'latest-branch-revision-max-processes)
(* 2 (assq-ref opts 'max-processes)))))))