diff options
Diffstat (limited to 'guix-qa-frontpage/server.scm')
-rw-r--r-- | guix-qa-frontpage/server.scm | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/guix-qa-frontpage/server.scm b/guix-qa-frontpage/server.scm index cddacf7..b9a814e 100644 --- a/guix-qa-frontpage/server.scm +++ b/guix-qa-frontpage/server.scm @@ -29,7 +29,7 @@ #:use-module (prometheus) #:use-module (system repl error-handling) #:use-module (fibers) - #:use-module (fibers web server) + #:use-module (fibers conditions) #:use-module (guix store) #:use-module (guix-data-service web util) #:use-module ((guix-data-service web query-parameters) @@ -37,6 +37,8 @@ #:use-module ((guix-build-coordinator utils) #:select (with-time-logging get-gc-metrics-updater call-with-delay-logging)) + #:use-module ((guix-build-coordinator utils fibers) + #:select (run-server/patched call-with-sigint)) #:use-module (guix-qa-frontpage database) #:use-module (guix-qa-frontpage derivation-changes) #:use-module (guix-qa-frontpage patchwork) @@ -522,10 +524,17 @@ has no patches or has been closed.") (apply make-controller assets-directory database metrics-registry controller-args)) - (run-fibers - (lambda () - (run-server (lambda (request body) - (apply values (handler request body controller))) - #:host host - #:port port)) - #:parallelism 2)) + (let ((finished? (make-condition))) + (call-with-sigint + (lambda () + (run-fibers + (lambda () + (run-server/patched + (lambda (request body) + (apply values (handler request body controller))) + #:host host + #:port port) + + (wait finished?)) + #:parallelism 2)) + finished?))) |