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:
parent
185ba36853
commit
65f2f21d3a
2 changed files with 24 additions and 12 deletions
|
|
@ -24,7 +24,8 @@
|
||||||
|
|
||||||
default-max-processes))
|
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)
|
(define (fetch-new-jobs)
|
||||||
(fetch-unlocked-jobs conn))
|
(fetch-unlocked-jobs conn))
|
||||||
|
|
||||||
|
|
@ -44,7 +45,9 @@
|
||||||
(process-jobs-concurrently fetch-new-jobs
|
(process-jobs-concurrently fetch-new-jobs
|
||||||
process-job
|
process-job
|
||||||
handle-job-failure
|
handle-job-failure
|
||||||
#:max-processes max-processes))
|
#:max-processes max-processes
|
||||||
|
#:priority-max-processes
|
||||||
|
latest-branch-revision-max-processes))
|
||||||
|
|
||||||
(define default-max-processes
|
(define default-max-processes
|
||||||
(max (round (/ (current-processor-count)
|
(max (round (/ (current-processor-count)
|
||||||
|
|
@ -55,12 +58,15 @@
|
||||||
(* (* 60 60) ;; 1 hour in seconds
|
(* (* 60 60) ;; 1 hour in seconds
|
||||||
24))
|
24))
|
||||||
|
|
||||||
(define* (process-jobs-concurrently fetch-new-jobs
|
(define* (process-jobs-concurrently
|
||||||
|
fetch-new-jobs
|
||||||
process-job
|
process-job
|
||||||
handle-job-failure
|
handle-job-failure
|
||||||
#:key (max-processes
|
#:key
|
||||||
default-max-processes)
|
(max-processes default-max-processes)
|
||||||
|
(priority-max-processes (* 2 max-processes))
|
||||||
(timeout default-timeout))
|
(timeout default-timeout))
|
||||||
|
|
||||||
(define processes
|
(define processes
|
||||||
(make-hash-table))
|
(make-hash-table))
|
||||||
|
|
||||||
|
|
@ -156,9 +162,7 @@
|
||||||
(hash-count (const #t) processes)))
|
(hash-count (const #t) processes)))
|
||||||
(when (< current-processes
|
(when (< current-processes
|
||||||
(if priority?
|
(if priority?
|
||||||
;; For priority jobs, burst up to twice the number
|
priority-max-processes
|
||||||
;; of max processes
|
|
||||||
(* 2 max-processes)
|
|
||||||
max-processes))
|
max-processes))
|
||||||
(fork-and-process-job (list job-id))))))
|
(fork-and-process-job (list job-id))))))
|
||||||
jobs)))
|
jobs)))
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,11 @@
|
||||||
(list (option '("max-processes") #t #f
|
(list (option '("max-processes") #t #f
|
||||||
(lambda (opt name arg result)
|
(lambda (opt name arg result)
|
||||||
(alist-cons 'max-processes
|
(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)
|
(string->number arg)
|
||||||
result)))))
|
result)))))
|
||||||
|
|
||||||
|
|
@ -62,4 +67,7 @@
|
||||||
(lambda (conn)
|
(lambda (conn)
|
||||||
(simple-format #t "Ready to process jobs...\n")
|
(simple-format #t "Ready to process jobs...\n")
|
||||||
(process-jobs conn
|
(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)))))))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue