summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-06-25 14:47:17 -0700
committerStan Hu <stanhu@gmail.com>2019-06-25 22:26:41 -0700
commit103f2243c897d3ad46b137a153e909e76fde4573 (patch)
tree4832b6a1a966d12fadd7faecf77fc1600e345a30 /spec
parente3eeb779d72006b9fbbaecf9f1d8fbd52a7d6383 (diff)
downloadgitlab-ce-103f2243c897d3ad46b137a153e909e76fde4573.tar.gz
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
Diffstat (limited to 'spec')
-rw-r--r--spec/services/projects/propagate_service_template_spec.rb2
-rw-r--r--spec/spec_helper.rb6
2 files changed, 7 insertions, 1 deletions
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 9266bee34d6..ec17bee640d 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -215,6 +215,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