From c2ccd8100600d558342d1ad6546cc43a63237c33 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 18 Aug 2024 09:48:08 +0100 Subject: [PATCH] Improve the implementation of checking for idle resources --- guix-data-service/utils.scm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/guix-data-service/utils.scm b/guix-data-service/utils.scm index 71426f8..393db95 100644 --- a/guix-data-service/utils.scm +++ b/guix-data-service/utils.scm @@ -160,6 +160,13 @@ (checkout-failure-count 0)) (spawn-fiber (lambda () + (when idle-seconds + (spawn-fiber + (lambda () + (while #t + (sleep idle-seconds) + (put-message channel '(check-for-idle-resources)))))) + (while #t (with-exception-handler (lambda (exn) @@ -174,15 +181,7 @@ (waiters '()) (resources-last-used '())) - (match (if idle-seconds - (perform-operation - (choice-operation - (get-operation channel) - (wrap-operation - ;; TODO Do something smarter - (sleep-operation 10) - (const '(check-for-idle-resources))))) - (get-message channel)) + (match (get-message channel) (('checkout reply) (if (null? available) (if (= (length resources) max-size)