diff --git a/src/db/pool.cr b/src/db/pool.cr index 7ad7c55..c12f1a3 100644 --- a/src/db/pool.cr +++ b/src/db/pool.cr @@ -54,7 +54,7 @@ module DB # TODO honor candidates while waiting for availables # this will allow us to remove `candidates.includes?(resource)` candidates.each do |ref| - resource = ref.target + resource = ref.value if resource && is_available?(resource) @available.delete resource resource.before_checkout @@ -63,7 +63,7 @@ module DB end resource = checkout - {resource, candidates.any? { |ref| ref.target == resource }} + {resource, candidates.any? { |ref| ref.value == resource }} end def release(resource : T) : Nil diff --git a/src/db/pool_prepared_statement.cr b/src/db/pool_prepared_statement.cr index 63ed49b..d50b240 100644 --- a/src/db/pool_prepared_statement.cr +++ b/src/db/pool_prepared_statement.cr @@ -40,7 +40,7 @@ module DB private def clean_connections # remove disposed or closed connections @connections.each do |ref| - conn = ref.target + conn = ref.value if !conn || conn.closed? @connections.delete ref end