Compare commits
2 commits
04d964a9f8
...
8100d36aa5
| Author | SHA1 | Date | |
|---|---|---|---|
| 8100d36aa5 | |||
| 9cce89fc01 |
1 changed files with 17 additions and 13 deletions
|
|
@ -558,8 +558,9 @@
|
|||
(lambda (exn)
|
||||
;; This can happen if the resource pool is destroyed very
|
||||
;; quickly
|
||||
(unless (resource-pool-destroyed-error? exn)
|
||||
(raise-exception exn)))
|
||||
(if (resource-pool-destroyed-error? exn)
|
||||
#f
|
||||
(raise-exception exn)))
|
||||
(lambda ()
|
||||
(with-parallelism-limiter
|
||||
return-new-resource/parallelism-limiter
|
||||
|
|
@ -588,13 +589,11 @@
|
|||
#:unwind? #t)))))
|
||||
#:unwind? #t))))
|
||||
|
||||
(define (spawn-fiber-to-destroy-resource resource-id resource-details)
|
||||
(define (spawn-fiber-to-destroy-resource resource-id resource-value)
|
||||
(spawn-fiber
|
||||
(lambda ()
|
||||
(let loop ()
|
||||
(let* ((resource
|
||||
(resource-details-value resource-details))
|
||||
(success?
|
||||
(let* ((success?
|
||||
(with-exception-handler
|
||||
(lambda _ #f)
|
||||
(lambda ()
|
||||
|
|
@ -608,7 +607,7 @@
|
|||
(print-backtrace-and-exception/knots exn)
|
||||
(raise-exception exn))
|
||||
(lambda ()
|
||||
(start-stack #t (destructor resource))
|
||||
(start-stack #t (destructor resource-value))
|
||||
#t)))
|
||||
#:unwind? #t)))
|
||||
|
||||
|
|
@ -662,7 +661,8 @@
|
|||
destructor)
|
||||
(spawn-fiber-to-destroy-resource
|
||||
resource-id
|
||||
(hash-ref resources resource-id)))
|
||||
(resource-details-value
|
||||
(hash-ref resources resource-id))))
|
||||
|
||||
(hash-remove! resources resource-id)
|
||||
|
||||
|
|
@ -886,7 +886,8 @@
|
|||
lifetime))
|
||||
(begin
|
||||
(spawn-fiber-to-destroy-resource resource-id
|
||||
resource-details)
|
||||
(resource-details-value
|
||||
resource-details))
|
||||
(loop next-resource-id
|
||||
available
|
||||
waiters))
|
||||
|
|
@ -956,7 +957,8 @@
|
|||
(hash-ref resources
|
||||
resource-id)))
|
||||
(spawn-fiber-to-destroy-resource resource-id
|
||||
resource-details)
|
||||
(resource-details-value
|
||||
resource-details))
|
||||
|
||||
(loop next-resource-id
|
||||
available
|
||||
|
|
@ -1033,7 +1035,8 @@
|
|||
(lambda (resource-id)
|
||||
(spawn-fiber-to-destroy-resource
|
||||
resource-id
|
||||
(hash-ref resources resource-id)))
|
||||
(resource-details-value
|
||||
(hash-ref resources resource-id))))
|
||||
resources-to-destroy))
|
||||
|
||||
(loop next-resource-id
|
||||
|
|
@ -1072,8 +1075,9 @@
|
|||
(lambda (resource-id)
|
||||
(spawn-fiber-to-destroy-resource
|
||||
resource-id
|
||||
(hash-ref resources
|
||||
resource-id)))
|
||||
(resource-details-value
|
||||
(hash-ref resources
|
||||
resource-id))))
|
||||
available))
|
||||
|
||||
;; Do this in parallel to avoid deadlocks between the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue