class ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper

Every frequency seconds, the reaper will call reap and flush on pool. A reaper instantiated with a zero frequency will never reap the connection pool.

Configure the frequency by setting reaping_frequency in your database yaml file (default 60 seconds).

Attributes

frequency[R]
pool[R]

Public Class Methods

new(pool, frequency) click to toggle source
# File lib/active_record/connection_adapters/abstract/connection_pool.rb, line 312
def initialize(pool, frequency)
  @pool      = pool
  @frequency = frequency
end

Private Class Methods

spawn_thread(frequency) click to toggle source
# File lib/active_record/connection_adapters/abstract/connection_pool.rb, line 334
def spawn_thread(frequency)
  Thread.new(frequency) do |t|
    running = true
    while running
      sleep t
      @mutex.synchronize do
        @pools[frequency].select!(&:weakref_alive?)
        @pools[frequency].each do |p|
          p.reap
          p.flush
        rescue WeakRef::RefError
        end

        if @pools[frequency].empty?
          @pools.delete(frequency)
          @threads.delete(frequency)
          running = false
        end
      end
    end
  end
end

Public Instance Methods

run() click to toggle source
# File lib/active_record/connection_adapters/abstract/connection_pool.rb, line 358
def run
  return unless frequency && frequency > 0
  self.class.register_pool(pool, frequency)
end