aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2018-04-04 15:23:49 -0400
committerGitHub <noreply@github.com>2018-04-04 15:23:49 -0400
commite1203433c09e1f72036cd036c8321e5db665f817 (patch)
tree35bba99409328e7390705da1bb8da47553bfae75
parent2d672ea8ed05aa0a435b0a38ce7e292938f8a89b (diff)
parentfb75c891ac7fe7331a9a967a96c674ed35eabdcf (diff)
downloadrails-e1203433c09e1f72036cd036c8321e5db665f817.tar.gz
rails-e1203433c09e1f72036cd036c8321e5db665f817.tar.bz2
rails-e1203433c09e1f72036cd036c8321e5db665f817.zip
Merge pull request #32414 from bogdan/query-cache-optimization
Optimize the code inside AR::QueryCache middleware
-rw-r--r--activerecord/lib/active_record/query_cache.rb15
-rw-r--r--activerecord/test/cases/query_cache_test.rb3
2 files changed, 6 insertions, 12 deletions
diff --git a/activerecord/lib/active_record/query_cache.rb b/activerecord/lib/active_record/query_cache.rb
index c8e340712d..28194c7c46 100644
--- a/activerecord/lib/active_record/query_cache.rb
+++ b/activerecord/lib/active_record/query_cache.rb
@@ -26,19 +26,12 @@ module ActiveRecord
end
def self.run
- ActiveRecord::Base.connection_handler.connection_pool_list.map do |pool|
- caching_was_enabled = pool.query_cache_enabled
-
- pool.enable_query_cache!
-
- [pool, caching_was_enabled]
- end
+ ActiveRecord::Base.connection_handler.connection_pool_list.
+ reject { |p| p.query_cache_enabled }.each { |p| p.enable_query_cache! }
end
- def self.complete(caching_pools)
- caching_pools.each do |pool, caching_was_enabled|
- pool.disable_query_cache! unless caching_was_enabled
- end
+ def self.complete(pools)
+ pools.each { |pool| pool.disable_query_cache! }
ActiveRecord::Base.connection_handler.connection_pool_list.each do |pool|
pool.release_connection if pool.active_connection? && !pool.connection.transaction_open?
diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb
index d635a47c0e..07be046fb7 100644
--- a/activerecord/test/cases/query_cache_test.rb
+++ b/activerecord/test/cases/query_cache_test.rb
@@ -441,8 +441,9 @@ class QueryCacheTest < ActiveRecord::TestCase
assert_not ActiveRecord::Base.connection_handler.active_connections? # sanity check
middleware {
- assert ActiveRecord::Base.connection.query_cache_enabled, "QueryCache did not get lazily enabled"
+ assert_predicate ActiveRecord::Base.connection, :query_cache_enabled
}.call({})
+ assert_not_predicate ActiveRecord::Base.connection, :query_cache_enabled
end
end