Compare commits

...

3 commits

Author SHA1 Message Date
a8e07b738b Fix a resource pool bug with idle seconds
Some checks failed
/ test (push) Has been cancelled
Actually perform the choice operation.
2025-11-26 10:06:20 +00:00
05f7daf0e9 Add another resource pool test 2025-11-26 10:06:09 +00:00
9c123bbfa9 Fix listing resource pool resources 2025-11-25 14:26:39 +00:00
2 changed files with 42 additions and 9 deletions

View file

@ -391,7 +391,7 @@
(('list-resources reply)
(spawn-fiber
(lambda ()
(put-message reply (list-copy resources))))
(put-message reply (vector->list resources))))
(loop available
waiters))
@ -967,7 +967,9 @@
(('list-resources reply)
(spawn-fiber
(lambda ()
(put-message reply (list-copy resources))))
(put-message reply (hash-map->list
(lambda (_ value) value)
resources))))
(loop next-resource-id
available
@ -1115,13 +1117,14 @@
(lambda ()
(let loop ()
(put-message channel '(check-for-idle-resources))
(when (choice-operation
(wrap-operation
(sleep-operation idle-seconds)
(const #t))
(wrap-operation
(wait-operation destroy-condition)
(const #f)))
(when (perform-operation
(choice-operation
(wrap-operation
(sleep-operation idle-seconds)
(const #t))
(wrap-operation
(wait-operation destroy-condition)
(const #f))))
(loop))))))
(with-exception-handler

View file

@ -252,4 +252,34 @@
(destroy-resource-pool resource-pool))))
;; Test allocating resources to waiters and destroying resources
(run-fibers-for-tests
(lambda ()
(let ((resource-pool (make-resource-pool
(lambda ()
(sleep 1)
'res)
2
#:idle-seconds 1
#:add-resources-parallelism 10
#:destructor
(const #t))))
(fibers-for-each
(lambda _
(with-resource-from-pool resource-pool
res
res))
(iota 20))
(sleep 2)
(fibers-for-each
(lambda _
(with-resource-from-pool resource-pool
res
res))
(iota 20))
(destroy-resource-pool resource-pool))))
(display "resource-pool test finished successfully\n")