instance method
flush
Ruby on Rails 8.1.2
Since v5.2.8.1Signature
flush(minimum_idle = @idle_timeout)
Disconnect all connections that have been idle for at least minimum_idle seconds. Connections currently checked out, or that were checked in less than minimum_idle seconds ago, are unaffected.
Parameters
-
minimum_idleopt = @idle_timeout
Source
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 727
def flush(minimum_idle = @idle_timeout)
return if minimum_idle.nil?
removed_connections = synchronize do
return if self.discarded?
idle_connections = @connections.select do |conn|
!conn.in_use? && conn.seconds_idle >= minimum_idle
end.sort_by { |conn| -conn.seconds_idle } # sort longest idle first
# Don't go below our configured pool minimum unless we're flushing
# everything
idles_to_retain =
if minimum_idle > 0
@min_connections - (@connections.size - idle_connections.size)
else
0
end
if idles_to_retain > 0
idle_connections.pop idles_to_retain
end
idle_connections.each do |conn|
conn.lease
@available.delete conn
@connections.delete conn
end
end
removed_connections.each do |conn|
conn.disconnect!
end
end
Defined in activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb line 727
· View on GitHub
· Improve this page
· Find usages on GitHub