Modify connection pool callbacks to be compatible w/ new style

Signed-off-by: Yehuda Katz <wycats@gmail.com>
This commit is contained in:
Nick Sieger
2009-10-16 11:39:32 -05:00
committed by Yehuda Katz
parent b0f55dc1f8
commit 471a394215
2 changed files with 27 additions and 8 deletions

View File

@@ -211,9 +211,10 @@ module ActiveRecord
# calling +checkout+ on this pool.
def checkin(conn)
@connection_mutex.synchronize do
conn.run_callbacks :checkin
@checked_out.delete conn
@queue.signal
conn.run_callbacks :checkin do
@checked_out.delete conn
@queue.signal
end
end
end
@@ -255,9 +256,10 @@ module ActiveRecord
end
def checkout_and_verify(c)
c.verify!
c.run_callbacks :checkout
@checked_out << c
c.run_callbacks :checkout do
c.verify!
@checked_out << c
end
c
end
end

View File

@@ -4,14 +4,14 @@ require "timeout"
class PooledConnectionsTest < ActiveRecord::TestCase
def setup
super
@per_test_teardown = []
@connection = ActiveRecord::Base.remove_connection
end
def teardown
ActiveRecord::Base.clear_all_connections!
ActiveRecord::Base.establish_connection(@connection)
super
@per_test_teardown.each {|td| td.call }
end
def checkout_connections
@@ -113,6 +113,23 @@ class PooledConnectionsTest < ActiveRecord::TestCase
assert_equal 3, after_count - before_count
end
def test_connection_pool_callbacks
checked_out, checked_in = false, false
ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
set_callback(:checkout, :after) { checked_out = true }
set_callback(:checkin, :before) { checked_in = true }
end
@per_test_teardown << proc do
ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
reset_callbacks :checkout
reset_callbacks :checkin
end
end
checkout_checkin_connections 1, 1
assert checked_out
assert checked_in
end
private
def add_record(name)