instance method
remove
Ruby on Rails 8.0.4
Since v4.0.13Signature
remove(conn)
Remove a connection from the connection pool. The connection will remain open and active but will no longer be managed by this pool.
Parameters
-
connreq
Source
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 597
def remove(conn)
needs_new_connection = false
synchronize do
remove_connection_from_thread_cache conn
@connections.delete conn
@available.delete conn
# @available.any_waiting? => true means that prior to removing this
# conn, the pool was at its max size (@connections.size == @size).
# This would mean that any threads stuck waiting in the queue wouldn't
# know they could checkout_new_connection, so let's do it for them.
# Because condition-wait loop is encapsulated in the Queue class
# (that in turn is oblivious to ConnectionPool implementation), threads
# that are "stuck" there are helpless. They have no way of creating
# new connections and are completely reliant on us feeding available
# connections into the Queue.
needs_new_connection = @available.any_waiting?
end
# This is intentionally done outside of the synchronized section as we
# would like not to hold the main mutex while checking out new connections.
# Thus there is some chance that needs_new_connection information is now
# stale, we can live with that (bulk_make_new_connections will make
# sure not to exceed the pool's @size limit).
bulk_make_new_connections(1) if needs_new_connection
end
Defined in activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb line 597
· View on GitHub
· Improve this page
· Find usages on GitHub