instance method flush

Ruby on Rails 8.1.2

Since v5.2.8.1

Available in: v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

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_idle opt = @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

Defined in ActiveRecord::ConnectionAdapters::ConnectionPool

Type at least 2 characters to search.

↑↓ navigate · open · esc close