diff --git a/app/services/projects/propagate_service_template.rb b/app/services/projects/propagate_service_template.rb index a2f36d2bd1b05415224ab690d43f116fc7540889..a25c985585b86e4adb0ca3372c0d6f5b5d2e8eec 100644 --- a/app/services/projects/propagate_service_template.rb +++ b/app/services/projects/propagate_service_template.rb @@ -24,7 +24,7 @@ module Projects def propagate_projects_with_template loop do - batch = project_ids_batch + batch = Project.uncached { project_ids_batch } bulk_create_from_template(batch) unless batch.empty? diff --git a/changelogs/unreleased/security-fix-issue-59379-12-0.yml b/changelogs/unreleased/security-fix-issue-59379-12-0.yml new file mode 100644 index 0000000000000000000000000000000000000000..a6c3ce14dcee0977048b6e8410a87c64c2bb86ff --- /dev/null +++ b/changelogs/unreleased/security-fix-issue-59379-12-0.yml @@ -0,0 +1,5 @@ +--- +title: Disable Rails SQL query cache when applying service templates +merge_request: +author: +type: security diff --git a/spec/services/projects/propagate_service_template_spec.rb b/spec/services/projects/propagate_service_template_spec.rb index f93e5aae82ab2165a459ec626b6cd587ae8e40ec..2c3effec617c64c8da2dc4005a8bfcb68b87c62a 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 390a869d93ff9e828f3f106598063d775a79defd..3bd2408dc720f46384a4281ea9ec03ac5df428a9 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