Method: ActiveRecord::ConnectionAdapters::ConnectionPool#flush

Defined in:
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb

#flush(minimum_idle = @idle_timeout) ⇒ Object

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.



648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
# File 'activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb', line 648

def flush(minimum_idle = @idle_timeout)
  return if minimum_idle.nil?

  idle_connections = synchronize do
    return if self.discarded?
    @connections.select do |conn|
      !conn.in_use? && conn.seconds_idle >= minimum_idle
    end.each do |conn|
      conn.lease

      @available.delete conn
      @connections.delete conn
    end
  end

  idle_connections.each do |conn|
    conn.disconnect!
  end
end