From 79b77b4377db2e79a1f3396cfeeca64bfab00341 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe <othacehe@gnu.org> Date: Mon, 1 Feb 2021 18:16:23 +0100 Subject: [PATCH] remote: Start workers only once. * src/cuirass/remote-worker.scm (%workers-started?): New variable. (remote-worker): Use it to start workers only once. --- src/cuirass/remote-worker.scm | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/cuirass/remote-worker.scm b/src/cuirass/remote-worker.scm index 97a9d7fa..f78560f0 100644 --- a/src/cuirass/remote-worker.scm +++ b/src/cuirass/remote-worker.scm @@ -286,6 +286,8 @@ and executing them. The worker can reply on the same socket." (define %worker-pids (make-atomic-box '())) +(define %workers-started? #f) + (define (load-server file) (let ((user-module (make-user-module '((cuirass remote))))) (load* file user-module))) @@ -368,20 +370,22 @@ exiting." (lambda (action service) (case action ((new-service) - (for-each - (lambda (n) - (let* ((address (or address - (avahi-service-local-address service))) - (publish-url (local-publish-url address))) - (add-to-worker-pids! - (start-worker (worker - (name (generate-worker-name)) - (address address) - (machine (gethostname)) - (publish-url publish-url) - (systems systems)) - (avahi-service->server service))))) - (iota workers))))) + (unless %workers-started? + (for-each + (lambda (n) + (let* ((address (or address + (avahi-service-local-address service))) + (publish-url (local-publish-url address))) + (add-to-worker-pids! + (start-worker (worker + (name (generate-worker-name)) + (address address) + (machine (gethostname)) + (publish-url publish-url) + (systems systems)) + (avahi-service->server service))))) + (iota workers)) + (set! %workers-started? #t))))) #:ignore-local? #f #:types (list remote-server-service-type) #:stop-loop? (lambda () -- GitLab