Skip to content

Commit

Permalink
Modify connection pool callbacks to be compatible w/ new style
Browse files Browse the repository at this point in the history
Signed-off-by: Yehuda Katz <wycats@gmail.com>
  • Loading branch information
nicksieger authored and wycats committed Oct 16, 2009
1 parent b0f55dc commit 471a394
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 8 deletions.
Expand Up @@ -211,9 +211,10 @@ def checkout
# 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

Expand Down Expand Up @@ -255,9 +256,10 @@ def checkout_existing_connection
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
Expand Down
21 changes: 19 additions & 2 deletions activerecord/test/cases/pooled_connections_test.rb
Expand Up @@ -4,14 +4,14 @@

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
Expand Down Expand Up @@ -113,6 +113,23 @@ def test_with_connection_nesting_safety
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)
Expand Down

0 comments on commit 471a394

Please sign in to comment.