diff options
author | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-07-08 15:06:53 +0800 |
---|---|---|
committer | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-07-08 15:43:49 +0800 |
commit | 10ed7f580ebdfe53848424268455257c9eb729c6 (patch) | |
tree | 3416bb1465edb539737dd111bcf23da90dd76892 /activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb | |
parent | 7d699dad334996838dd529e4b75e1648692d56f8 (diff) | |
download | rails-10ed7f580ebdfe53848424268455257c9eb729c6.tar.gz rails-10ed7f580ebdfe53848424268455257c9eb729c6.tar.bz2 rails-10ed7f580ebdfe53848424268455257c9eb729c6.zip |
Fix query cache when using shared connections
Enables the query cache on the correct connection when
shared connections across threads are enabled
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.rb | 8 |
1 files changed, 6 insertions, 2 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 9b3f5260f7..36001efdd5 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb @@ -426,7 +426,7 @@ module ActiveRecord # #connection can be called any number of times; the connection is # held in a cache keyed by a thread. def connection - @thread_cached_conns[connection_cache_key(@lock_thread || Thread.current)] ||= checkout + @thread_cached_conns[connection_cache_key(current_thread)] ||= checkout end # Returns true if there is an open connection being used for the current thread. @@ -435,7 +435,7 @@ module ActiveRecord # #connection or #with_connection methods. Connections obtained through # #checkout will not be detected by #active_connection? def active_connection? - @thread_cached_conns[connection_cache_key(Thread.current)] + @thread_cached_conns[connection_cache_key(current_thread)] end # Signal that the thread is finished with the current connection. @@ -730,6 +730,10 @@ module ActiveRecord thread end + def current_thread + @lock_thread || Thread.current + end + # Take control of all existing connections so a "group" action such as # reload/disconnect can be performed safely. It is no longer enough to # wrap it in +synchronize+ because some pool's actions are allowed |