module ActiveRecord::Bogacs::PoolSupport

Attributes

schema_cache[RW]

Public Class Methods

included(base) click to toggle source
# File lib/active_record/bogacs/pool_support.rb, line 7
def self.included(base)
  base.send :include, ActiveRecord::ConnectionAdapters::QueryCache::ConnectionPoolConfiguration
end

Public Instance Methods

connection_cache_key(owner_thread = Thread.current) click to toggle source

@override (previously named current_connection_id) @private connection_cache_key for AR (5.2) compatibility

# File lib/active_record/bogacs/pool_support.rb, line 29
def connection_cache_key(owner_thread = Thread.current)
  owner_thread.object_id
end
lock_thread=(lock_thread) click to toggle source
# File lib/active_record/bogacs/pool_support.rb, line 13
def lock_thread=(lock_thread)
  if lock_thread
    @lock_thread = Thread.current
  else
    @lock_thread = nil
  end
end
new_connection() click to toggle source
# File lib/active_record/bogacs/pool_support.rb, line 21
def new_connection
  conn = Base.send(spec.adapter_method, spec.config)
  conn.schema_cache = schema_cache.dup if schema_cache && conn.respond_to?(:schema_cache=)
  conn
end
reap() click to toggle source

clear_stale_cached_connections! without the deprecation :

# File lib/active_record/bogacs/pool_support.rb, line 42
def reap
  keys = @reserved_connections.keys -
   Thread.list.find_all { |t| t.alive? }.map(&:object_id)
  keys.each do |key|
    conn = @reserved_connections[key]
    checkin conn
    @reserved_connections.delete(key)
  end
end
remove(conn) click to toggle source

@note Method not part of the pre 4.0 API (does no exist).

# File lib/active_record/bogacs/pool_support.rb, line 34
def remove(conn)
  synchronize do
    @connections.delete conn
    release conn
  end
end

Private Instance Methods

_run_checkin_callbacks(conn) click to toggle source
# File lib/active_record/bogacs/pool_support.rb, line 60
def _run_checkin_callbacks(conn)
  if conn.respond_to?(:_run_checkin_callbacks)
    conn._run_checkin_callbacks do
      conn.expire
    end
  else
    conn.run_callbacks :checkin do
      conn.expire
    end
  end
rescue => e
  remove conn
  conn.disconnect! rescue nil
  raise e
end
_run_checkout_callbacks(conn) click to toggle source
# File lib/active_record/bogacs/pool_support.rb, line 76
def _run_checkout_callbacks(conn)
  if conn.respond_to?(:_run_checkout_callbacks)
    conn._run_checkout_callbacks do
      conn.verify!
    end
  else
    conn.run_callbacks :checkout do
      conn.verify!
    end
  end
rescue => e
  remove conn
  conn.disconnect! rescue nil
  raise e
end
current_thread() click to toggle source
# File lib/active_record/bogacs/pool_support.rb, line 54
def current_thread
  @lock_thread || Thread.current
end