summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-06-28 12:21:25 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-06-28 12:21:25 +0200
commit02bb40e2acd7b1838e47e1a2f8b9288e42e6ca53 (patch)
tree96ad606eced04aa327cce17aa7adc7942a98106c
parent6209ff671fdd025be31f9dcaf208a71b6ec2907d (diff)
downloadgitlab-ce-02bb40e2acd7b1838e47e1a2f8b9288e42e6ca53.tar.gz
Find builds that require a migration in batches
-rw-r--r--db/post_migrate/20170628080858_migrate_stage_id_reference_in_background.rb9
-rw-r--r--spec/migrations/migrate_stage_id_reference_in_background_spec.rb2
2 files changed, 8 insertions, 3 deletions
diff --git a/db/post_migrate/20170628080858_migrate_stage_id_reference_in_background.rb b/db/post_migrate/20170628080858_migrate_stage_id_reference_in_background.rb
index 44bac4a8cc7..6b326bc0b69 100644
--- a/db/post_migrate/20170628080858_migrate_stage_id_reference_in_background.rb
+++ b/db/post_migrate/20170628080858_migrate_stage_id_reference_in_background.rb
@@ -2,6 +2,8 @@ class MigrateStageIdReferenceInBackground < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
+ BATCH_SIZE = 10000
+ MIGRATION = 'MigrateBuildStageIdReference'.freeze
disable_ddl_transaction!
@@ -10,9 +12,10 @@ class MigrateStageIdReferenceInBackground < ActiveRecord::Migration
end
def up
- Build.find_each do |build|
- BackgroundMigrationWorker
- .perform_async('MigrateBuildStageIdReference', [build.id])
+ Build.find_in_batches(batch_size: BATCH_SIZE).with_index do |builds, batch|
+ migrations = builds.map { |build| [MIGRATION, [build.id]] }
+
+ BackgroundMigrationWorker.perform_bulk(*migrations)
end
end
diff --git a/spec/migrations/migrate_stage_id_reference_in_background_spec.rb b/spec/migrations/migrate_stage_id_reference_in_background_spec.rb
index ea3a18802d9..d515eb42b9d 100644
--- a/spec/migrations/migrate_stage_id_reference_in_background_spec.rb
+++ b/spec/migrations/migrate_stage_id_reference_in_background_spec.rb
@@ -8,6 +8,8 @@ describe MigrateStageIdReferenceInBackground, :migration, :redis do
let(:projects) { table(:projects) }
before do
+ stub_const('MigrateStageIdReferenceInBackground::BATCH_SIZE', 1)
+
projects.create!(id: 123, name: 'gitlab1', path: 'gitlab1')
pipelines.create!(id: 1, project_id: 123, ref: 'master', sha: 'adf43c3a')