diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-03-12 11:51:28 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-03-12 11:58:38 -0700 |
commit | 5f26ce699f9e695c434cbff20626a9ff4d3114e4 (patch) | |
tree | a4e0480f3c908aa480c44a8605f41860b6b68de9 /activerecord/lib/active_record/connection_adapters/abstract | |
parent | da0595d7d796e52b950d2c60cb60e58c18b70791 (diff) | |
download | rails-5f26ce699f9e695c434cbff20626a9ff4d3114e4.tar.gz rails-5f26ce699f9e695c434cbff20626a9ff4d3114e4.tar.bz2 rails-5f26ce699f9e695c434cbff20626a9ff4d3114e4.zip |
make sure connections returned after close are marked as in_use
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb | 16 |
1 files changed, 16 insertions, 0 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 4787bd2cbf..f198be0802 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb @@ -269,11 +269,27 @@ connection. For example: ActiveRecord::Base.connection.close conn.expire @queue.signal end + + release conn end end 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 |