aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-03-12 11:51:28 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2012-03-12 11:51:28 -0700
commit0210c44cd31ac4711e8d510c418fb325e3f44fa9 (patch)
treeacb6f03646f2358d2fd79670b79023015899d4d7 /activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
parent7f40b9cd429cabad80ef9d8fbe3a169d14bf1dba (diff)
downloadrails-0210c44cd31ac4711e8d510c418fb325e3f44fa9.tar.gz
rails-0210c44cd31ac4711e8d510c418fb325e3f44fa9.tar.bz2
rails-0210c44cd31ac4711e8d510c418fb325e3f44fa9.zip
make sure connections returned after close are marked as in_use
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb21
1 files changed, 17 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
index 0d61d1d3f3..561e48d52e 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
@@ -235,6 +235,8 @@ module ActiveRecord
conn.run_callbacks :checkin do
conn.expire
end
+
+ release conn
end
end
@@ -246,10 +248,7 @@ module ActiveRecord
# FIXME: we might want to store the key on the connection so that removing
# from the reserved hash will be a little easier.
- thread_id = @reserved_connections.keys.find { |k|
- @reserved_connections[k] == conn
- }
- @reserved_connections.delete thread_id if thread_id
+ release conn
end
end
@@ -267,6 +266,20 @@ module ActiveRecord
private
+ def release(conn)
+ thread_id = nil
+
+ if @reserved_connections[current_connection_id] == conn
+ thread_id = current_connection_id
+ else
+ thread_id = @reserved_connections.keys.find { |k|
+ @reserved_connections[k] == conn
+ }
+ end
+
+ @reserved_connections.delete thread_id if thread_id
+ end
+
def new_connection
ActiveRecord::Base.send(spec.adapter_method, spec.config)
end