diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-05-19 11:39:17 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-05-19 11:39:17 -0700 |
commit | 23fad29c1932119898259eab557162c1326fd325 (patch) | |
tree | 18a87a531e4ef3d7811237175f617c92e5f78141 /activerecord | |
parent | 777d53901427ea183170c932d27eb43ce9fa5800 (diff) | |
parent | c2d416fe7712cbaf69036f9e638c825e08415e34 (diff) | |
download | rails-23fad29c1932119898259eab557162c1326fd325.tar.gz rails-23fad29c1932119898259eab557162c1326fd325.tar.bz2 rails-23fad29c1932119898259eab557162c1326fd325.zip |
Merge pull request #6398 from pmahoney/threadsafe-connection-pool
Synchronize read and modification of @reserved_connections
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb | 12 |
1 files changed, 8 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 46c7fc71ac..c6699737b4 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb @@ -139,14 +139,18 @@ module ActiveRecord # #connection can be called any number of times; the connection is # held in a hash keyed by the thread id. def connection - @reserved_connections[current_connection_id] ||= checkout + synchronize do + @reserved_connections[current_connection_id] ||= checkout + end end # Is there an open connection that is being used for the current thread? def active_connection? - @reserved_connections.fetch(current_connection_id) { - return false - }.in_use? + synchronize do + @reserved_connections.fetch(current_connection_id) { + return false + }.in_use? + end end # Signal that the thread is finished with the current connection. |