diff --git a/src/db/connection.cr b/src/db/connection.cr index 5c3d407..d6a8ee2 100644 --- a/src/db/connection.cr +++ b/src/db/connection.cr @@ -38,6 +38,7 @@ module DB protected def do_close @statements_cache.each_value &.close @statements_cache.clear + @database.pool.delete self end end end diff --git a/src/db/pool.cr b/src/db/pool.cr index e56be3d..15ca7f1 100644 --- a/src/db/pool.cr +++ b/src/db/pool.cr @@ -88,8 +88,7 @@ module DB rescue e : ConnectionLost # if the connection is lost close it to release resources # and remove it from the known pool. - @total.delete(e.connection) - @available.delete(e.connection) + delete(e.connection) e.connection.close end end @@ -103,11 +102,17 @@ module DB end end - # :nodon: + # :nodoc: def is_available?(resource : T) @available.includes?(resource) end + # :nodoc: + def delete(resource : T) + @total.delete(resource) + @available.delete(resource) + end + private def build_resource : T resource = @factory.call @total << resource