Hi folks! When I was trying to fix a halting bug in GNU Artanis' new runner module based on futures for async requests. I found it doesn't work for my cloud server which has only one CPU. The reason is because the%worker-count will be zero when there's only one cpu. So it will do nothing for the existing futures in the queue. The proper fix should be always keep %worker-count when there's just one cpu.
It was tested successfully on my server machine. Attached the patch. Thanks!
From e675b77a1c7de7ca03566a1f71ac75ea3ed24cb1 Mon Sep 17 00:00:00 2001 From: Nala Ginrut <mu...@gnu.org> Date: Thu, 14 Aug 2025 21:37:42 +0900 Subject: [PATCH] Fix futures, %worker-count shouldn't be zero to prevent halting --- module/ice-9/futures.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/module/ice-9/futures.scm b/module/ice-9/futures.scm index 4a462839a..a830858b0 100644 --- a/module/ice-9/futures.scm +++ b/module/ice-9/futures.scm @@ -264,7 +264,9 @@ adding it to the waiter queue." (define %worker-count (if (provided? 'threads) - (- (current-processor-count) 1) + (if (= 1 (current-processor-count)) + 1 + (- (current-processor-count) 1)) 0)) ;; A dock of workers that stay here forever. -- 2.43.0