From ea8605d58ffac6327152cd2ab43a8d76c44a58cb Mon Sep 17 00:00:00 2001 From: Andreas Brandl <abrandl@gitlab.com> Date: Wed, 7 Oct 2020 14:41:11 +0200 Subject: [PATCH] Revert post-deploy migration This has failed in a GitLab.com deploy: https://gitlab.com/gitlab-com/gl-infra/production/-/issues/2802 --- ...610_schedule_sync_blocking_issues_count.rb | 51 -------------- db/schema_migrations/20200914185610 | 1 - ...chedule_sync_blocking_issues_count_spec.rb | 70 ------------------- 3 files changed, 122 deletions(-) delete mode 100644 db/post_migrate/20200914185610_schedule_sync_blocking_issues_count.rb delete mode 100644 db/schema_migrations/20200914185610 delete mode 100644 ee/spec/migrations/schedule_sync_blocking_issues_count_spec.rb diff --git a/db/post_migrate/20200914185610_schedule_sync_blocking_issues_count.rb b/db/post_migrate/20200914185610_schedule_sync_blocking_issues_count.rb deleted file mode 100644 index 74272cf5b39a20dc..0000000000000000 --- a/db/post_migrate/20200914185610_schedule_sync_blocking_issues_count.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -class ScheduleSyncBlockingIssuesCount < ActiveRecord::Migration[6.0] - include Gitlab::Database::MigrationHelpers - - BATCH_SIZE = 50 - DELAY_INTERVAL = 120.seconds.to_i - MIGRATION = 'SyncBlockingIssuesCount'.freeze - - disable_ddl_transaction! - - class Issue < ActiveRecord::Base - include EachBatch - - self.table_name = 'issues' - end - - def up - return unless Gitlab.ee? - - blocking_issues_ids = <<-SQL - SELECT issue_links.source_id AS blocking_issue_id - FROM issue_links - INNER JOIN issues ON issue_links.source_id = issues.id - WHERE issue_links.link_type = 1 - AND issues.state_id = 1 - AND issues.blocking_issues_count = 0 - UNION - SELECT issue_links.target_id AS blocking_issue_id - FROM issue_links - INNER JOIN issues ON issue_links.target_id = issues.id - WHERE issue_links.link_type = 2 - AND issues.state_id = 1 - AND issues.blocking_issues_count = 0 - SQL - - relation = - Issue.where("id IN(#{blocking_issues_ids})") # rubocop:disable GitlabSecurity/SqlInjection - - queue_background_migration_jobs_by_range_at_intervals( - relation, - MIGRATION, - DELAY_INTERVAL, - batch_size: BATCH_SIZE - ) - end - - def down - # no-op - end -end diff --git a/db/schema_migrations/20200914185610 b/db/schema_migrations/20200914185610 deleted file mode 100644 index a2bf098a7ac0200a..0000000000000000 --- a/db/schema_migrations/20200914185610 +++ /dev/null @@ -1 +0,0 @@ -50cdb8d42baa0890b39ca7d07a4c157aea7d52a39dee48ee59e51417442eaaf4 \ No newline at end of file diff --git a/ee/spec/migrations/schedule_sync_blocking_issues_count_spec.rb b/ee/spec/migrations/schedule_sync_blocking_issues_count_spec.rb deleted file mode 100644 index 30fb5e62193f1bc9..0000000000000000 --- a/ee/spec/migrations/schedule_sync_blocking_issues_count_spec.rb +++ /dev/null @@ -1,70 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' -require Rails.root.join('db', 'post_migrate', '20200914185610_schedule_sync_blocking_issues_count') - -RSpec.describe ScheduleSyncBlockingIssuesCount do - let(:issues) { table(:issues) } - let(:links) { table(:issue_links) } - let(:migration) { described_class::MIGRATION } - - # Blocking issues - let!(:issue_1) { issues.create!(description: 'blocking 1', state_id: 1) } - let!(:issue_2) { issues.create!(description: 'blocking 2', state_id: 1) } - let!(:issue_3) { issues.create!(description: 'blocking 3', state_id: 2) } - let!(:issue_4) { issues.create!(description: 'blocking 4', state_id: 1 ) } - - # Blocked issues - let!(:issue_5) { issues.create!(description: 'blocked 1', state_id: 1) } - let!(:issue_6) { issues.create!(description: 'blocked 2', state_id: 1) } - let!(:issue_7) { issues.create!(description: 'blocked 3', state_id: 1) } - let!(:issue_8) { issues.create!(description: 'blocked 4', state_id: 1) } - let!(:issue_9) { issues.create!(description: 'blocked 5', state_id: 1) } - let!(:issue_10) { issues.create!(description: 'blocked 6', state_id: 1) } - - before do - stub_const("#{described_class.name}::BATCH_SIZE", 2) - - # Issue links - # ----------- - # issue_1 blocks two issues with link_type BLOCKS - # issue_2 blocks two issues with link_type IS_BLOCKED_BY - # issue_3 blocks one issue with link_type IS_BLOCKED_BY but it is closed - # issue_4 blocks one issue with link_type BLOCKS - links.create!(link_type: 1, source_id: issue_1.id, target_id: issue_5.id) - links.create!(link_type: 1, source_id: issue_1.id, target_id: issue_6.id) - links.create!(link_type: 2, source_id: issue_7.id, target_id: issue_2.id) - links.create!(link_type: 2, source_id: issue_8.id, target_id: issue_2.id) - links.create!(link_type: 1, source_id: issue_4.id, target_id: issue_9.id) - links.create!(link_type: 2, source_id: issue_10.id, target_id: issue_3.id) - end - - context 'scheduling migrations' do - before do - Sidekiq::Worker.clear_all - end - - it 'correctly schedules issuable sync background migration' do - Sidekiq::Testing.fake! do - freeze_time do - migrate! - - expect(migration).to be_scheduled_delayed_migration(120.seconds, issue_1.id, issue_2.id) - expect(migration).to be_scheduled_delayed_migration(240.seconds, issue_4.id, issue_4.id) - expect(BackgroundMigrationWorker.jobs.size).to eq(2) - end - end - end - end - - context 'running background migration' do - it 'correctly populates issues blocking_issues_count', :sidekiq_might_not_need_inline do - migrate! - - expect(issue_1.reload.blocking_issues_count).to eq(2) - expect(issue_2.reload.blocking_issues_count).to eq(2) - expect(issue_3.reload.blocking_issues_count).to eq(0) - expect(issue_4.reload.blocking_issues_count).to eq(1) - end - end -end -- GitLab