From d4c87d4dd7a1d7e4d9b38d37b16c85f7326321fc Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 25 Jun 2019 14:47:17 -0700 Subject: Disable Rails SQL query cache when applying service templates When the SQL query cache is active, the SELECT query for finding projects to apply service templates returns the same values. This causes an infinite loop because even though bulk INSERT queries are made, the cached results never reflect that progress. To fix this, we call `Project.uncached` around the query to ensure new data is retrieved. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/63595 --- spec/services/projects/propagate_service_template_spec.rb | 2 +- spec/spec_helper.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'spec') diff --git a/spec/services/projects/propagate_service_template_spec.rb b/spec/services/projects/propagate_service_template_spec.rb index f93e5aae82a..2c3effec617 100644 --- a/spec/services/projects/propagate_service_template_spec.rb +++ b/spec/services/projects/propagate_service_template_spec.rb @@ -72,7 +72,7 @@ describe Projects::PropagateServiceTemplate do expect(project.pushover_service.properties).to eq(service_template.properties) end - describe 'bulk update' do + describe 'bulk update', :use_sql_query_cache do let(:project_total) { 5 } before do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 390a869d93f..3bd2408dc72 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -218,6 +218,12 @@ RSpec.configure do |config| ActionController::Base.cache_store = caching_store end + config.around(:each, :use_sql_query_cache) do |example| + ActiveRecord::Base.cache do + example.run + end + end + # The :each scope runs "inside" the example, so this hook ensures the DB is in the # correct state before any examples' before hooks are called. This prevents a # problem where `ScheduleIssuesClosedAtTypeChange` (or any migration that depends -- cgit v1.2.1