diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2018-02-21 15:18:24 +0300 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2018-02-21 15:18:24 +0300 |
commit | 561e00b2fa2c25242da3287c24856079f7f85c01 (patch) | |
tree | 26d12efdabf72a15ff765663b8c767df3a4d6b79 | |
parent | 216d21c5496fb7e7666c3c3e7ebbdff1e8fd0493 (diff) | |
parent | 2e216dd43bb02d741b2fcbfc1fe40042ad85a590 (diff) |
Merge branch 'query-counting-should-not-include-cached-queries' into 'master'
Do not count rails sql cache as queries in query limiting
See merge request gitlab-org/gitlab-ce!17253
-rw-r--r-- | lib/gitlab/query_limiting/active_support_subscriber.rb | 6 | ||||
-rw-r--r-- | spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb | 31 |
2 files changed, 27 insertions, 10 deletions
diff --git a/lib/gitlab/query_limiting/active_support_subscriber.rb b/lib/gitlab/query_limiting/active_support_subscriber.rb index 66049c94ec6..4c83581c4b1 100644 --- a/lib/gitlab/query_limiting/active_support_subscriber.rb +++ b/lib/gitlab/query_limiting/active_support_subscriber.rb @@ -3,8 +3,10 @@ module Gitlab class ActiveSupportSubscriber < ActiveSupport::Subscriber attach_to :active_record - def sql(*) - Transaction.current&.increment + def sql(event) + unless event.payload[:name] == 'CACHE' + Transaction.current&.increment + end end end end diff --git a/spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb b/spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb index b49bc5c328c..f8faeffb935 100644 --- a/spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb +++ b/spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb @@ -1,19 +1,34 @@ require 'spec_helper' describe Gitlab::QueryLimiting::ActiveSupportSubscriber do + let(:transaction) { instance_double(Gitlab::QueryLimiting::Transaction, increment: true) } + + before do + allow(Gitlab::QueryLimiting::Transaction) + .to receive(:current) + .and_return(transaction) + end + describe '#sql' do it 'increments the number of executed SQL queries' do - transaction = double(:transaction) - - allow(Gitlab::QueryLimiting::Transaction) - .to receive(:current) - .and_return(transaction) + User.count expect(transaction) - .to receive(:increment) - .at_least(:once) + .to have_received(:increment) + .once + end - User.count + context 'when the query is actually a rails cache hit' do + it 'does not increment the number of executed SQL queries' do + ActiveRecord::Base.connection.cache do + User.count + User.count + end + + expect(transaction) + .to have_received(:increment) + .once + end end end end |