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)