aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix-qa-frontpage/manage-builds.scm23
-rw-r--r--guix-qa-frontpage/server.scm48
-rw-r--r--scripts/guix-qa-frontpage.in12
3 files changed, 57 insertions, 26 deletions
diff --git a/guix-qa-frontpage/manage-builds.scm b/guix-qa-frontpage/manage-builds.scm
index 15d0a2f..3d5e917 100644
--- a/guix-qa-frontpage/manage-builds.scm
+++ b/guix-qa-frontpage/manage-builds.scm
@@ -5,6 +5,7 @@
#:use-module (ice-9 match)
#:use-module (ice-9 streams)
#:use-module (ice-9 threads)
+ #:use-module (fibers)
#:use-module (prometheus)
#:use-module (guix sets)
#:use-module ((guix build syscalls)
@@ -27,7 +28,7 @@
default-branch-priority-for-change
submit-builds-for-branch
- start-submit-patch-builds-thread
+ start-submit-patch-builds-fiber
start-submit-branch-builds-thread
start-submit-master-branch-system-tests-thread))
@@ -116,11 +117,11 @@
(simple-format #t "no derivation changes url for issue ~A\n"
issue-number))))
-(define* (start-submit-patch-builds-thread database
- build-coordinator
- guix-data-service
- metrics-registry
- #:key (series-count 200))
+(define* (start-submit-patch-builds-fiber database
+ build-coordinator
+ guix-data-service
+ metrics-registry
+ #:key (series-count 200))
(define (priority-for-change change)
(if (member (assoc-ref change "system")
'("x86_64-linux" "aarch64-linux"))
@@ -162,8 +163,7 @@
issues-with-builds-to-cancel))
(simple-format #t "submitting patch builds\n")
- (n-par-for-each
- 4
+ (for-each
(lambda (issue-number)
(submit-builds-for-issue
database
@@ -176,13 +176,8 @@
300)))
first-n-series-issue-numbers)))
- (call-with-new-thread
+ (spawn-fiber
(lambda ()
- (catch 'system-error
- (lambda ()
- (set-thread-name "patch builds"))
- (const #t))
-
(while #t
(with-exception-handler
(lambda (exn)
diff --git a/guix-qa-frontpage/server.scm b/guix-qa-frontpage/server.scm
index 0f2f40f..4b7bfeb 100644
--- a/guix-qa-frontpage/server.scm
+++ b/guix-qa-frontpage/server.scm
@@ -30,8 +30,11 @@
#:use-module (prometheus)
#:use-module (system repl error-handling)
#:use-module (fibers)
+ #:use-module (fibers scheduler)
#:use-module (fibers conditions)
#:use-module (guix store)
+ #:use-module ((guix build syscalls)
+ #:select (set-thread-name))
#:use-module (guix-data-service web util)
#:use-module ((guix-data-service web query-parameters)
#:select (parse-query-string))
@@ -57,7 +60,7 @@
#:use-module (guix-qa-frontpage view branches)
#:use-module (guix-qa-frontpage view branch)
#:use-module (guix-qa-frontpage view issue)
- #:export (start-guix-qa-frontpage-web-server))
+ #:export (start-guix-qa-frontpage))
(define (branch-for-issue database issue-number)
(let ((branches
@@ -535,18 +538,55 @@ has no patches or has been closed.")
(render-html #:sxml (error-page args)
#:code 500))))
-(define* (start-guix-qa-frontpage-web-server port host assets-directory
- database metrics-registry
- #:key (controller-args '()))
+(define* (start-guix-qa-frontpage port host assets-directory
+ database metrics-registry
+ #:key (controller-args '())
+ submit-builds?
+ patch-issues-to-show)
(define controller
(apply make-controller assets-directory database metrics-registry
controller-args))
(let ((finished? (make-condition)))
+ (call-with-new-thread
+ (lambda ()
+ (catch 'system-error
+ (lambda ()
+ (set-thread-name "maintenance"))
+ (const #t))
+
+ (run-fibers
+ (lambda ()
+ (when submit-builds?
+ (start-submit-patch-builds-fiber database
+ "http://127.0.0.1:8746"
+ "https://data.qa.guix.gnu.org"
+ metrics-registry
+ #:series-count
+ patch-issues-to-show))
+ (wait finished?))
+ #:parallelism 1)))
+
(call-with-sigint
(lambda ()
(run-fibers
(lambda ()
+ (let* ((current (current-scheduler))
+ (schedulers
+ (cons current (scheduler-remote-peers current))))
+ (for-each
+ (lambda (i sched)
+ (spawn-fiber
+ (lambda ()
+ (catch 'system-error
+ (lambda ()
+ (set-thread-name
+ (string-append "fibers " (number->string i))))
+ (const #t)))
+ sched))
+ (iota (length schedulers))
+ schedulers))
+
(run-server/patched
(lambda (request body)
(apply values (handler request body controller)))
diff --git a/scripts/guix-qa-frontpage.in b/scripts/guix-qa-frontpage.in
index c57d14d..3368860 100644
--- a/scripts/guix-qa-frontpage.in
+++ b/scripts/guix-qa-frontpage.in
@@ -254,12 +254,6 @@
metrics-registry)
(when (assq-ref opts 'submit-builds)
- (start-submit-patch-builds-thread database
- "http://127.0.0.1:8746"
- "https://data.qa.guix.gnu.org"
- metrics-registry
- #:series-count
- patch-issues-to-show)
(start-submit-branch-builds-thread database
"http://127.0.0.1:8746"
"https://data.qa.guix.gnu.org"
@@ -274,11 +268,13 @@
(start-manage-patch-branches-thread database
#:series-count patch-issues-to-show))
- (start-guix-qa-frontpage-web-server
+ (start-guix-qa-frontpage
(assq-ref opts 'port)
(assq-ref opts 'host)
(assq-ref opts 'assets-directory)
database
metrics-registry
#:controller-args `(#:doc-dir ,doc-dir
- #:patch-issues-to-show ,patch-issues-to-show)))))))
+ #:patch-issues-to-show ,patch-issues-to-show)
+ #:submit-builds? (assq-ref opts 'submit-builds)
+ #:patch-issues-to-show patch-issues-to-show))))))