Add support for tracking resource pool checkout timeouts
This commit is contained in:
parent
88b9d34fb1
commit
f1add88867
1 changed files with 9 additions and 1 deletions
|
|
@ -39,6 +39,7 @@
|
||||||
prevent-inlining-for-tests
|
prevent-inlining-for-tests
|
||||||
|
|
||||||
resource-pool-default-timeout
|
resource-pool-default-timeout
|
||||||
|
%resource-pool-timeout-handler
|
||||||
make-resource-pool
|
make-resource-pool
|
||||||
destroy-resource-pool
|
destroy-resource-pool
|
||||||
call-with-resource-from-pool
|
call-with-resource-from-pool
|
||||||
|
|
@ -341,7 +342,11 @@
|
||||||
(define resource-pool-timeout-error?
|
(define resource-pool-timeout-error?
|
||||||
(record-predicate &resource-pool-timeout))
|
(record-predicate &resource-pool-timeout))
|
||||||
|
|
||||||
(define* (call-with-resource-from-pool pool proc #:key (timeout 'default))
|
(define %resource-pool-timeout-handler
|
||||||
|
(make-parameter #f))
|
||||||
|
|
||||||
|
(define* (call-with-resource-from-pool pool proc #:key (timeout 'default)
|
||||||
|
(timeout-handler (%resource-pool-timeout-handler)))
|
||||||
"Call PROC with a resource from POOL, blocking until a resource becomes
|
"Call PROC with a resource from POOL, blocking until a resource becomes
|
||||||
available. Return the resource once PROC has returned."
|
available. Return the resource once PROC has returned."
|
||||||
|
|
||||||
|
|
@ -394,6 +399,9 @@ available. Return the resource once PROC has returned."
|
||||||
|
|
||||||
(when (or (not resource)
|
(when (or (not resource)
|
||||||
(eq? resource 'resource-pool-retry-checkout))
|
(eq? resource 'resource-pool-retry-checkout))
|
||||||
|
(when timeout-handler
|
||||||
|
(timeout-handler pool proc timeout))
|
||||||
|
|
||||||
(raise-exception
|
(raise-exception
|
||||||
(make-resource-pool-timeout-error)))
|
(make-resource-pool-timeout-error)))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue