method
remove
v5.1.7 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::ConnectionPool
remove(conn)public
Remove a connection from the connection pool. The connection will remain open and active but will no longer be managed by this pool.
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 526
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 Related methods
- Instance methods
- active_connection?
- checkin
- checkout
- clear_reloadable_connections
- clear_reloadable_connections!
- connected?
- connection
- disconnect
- disconnect!
- lock_thread=
- num_waiting_in_queue
- reap
- release_connection
- remove
- stat
- with_connection
- Class methods
- new
- Private methods
-
acquire_connection -
adopt_connection -
attempt_to_checkout_all_existing_connections -
bulk_make_new_connections -
checkout_and_verify -
checkout_for_exclusive_access -
checkout_new_connection -
connection_cache_key -
new_connection -
release -
remove_connection_from_thread_cache -
try_to_checkout_new_connection -
with_exclusively_acquired_all_connections -
with_new_connections_blocked