blob: c05b759c2d04388b8929af1d7f1f1b3953362de7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# frozen_string_literal: true
class FixPartitionIdsOnCiSourcesPipelines < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
restrict_gitlab_migration gitlab_schema: :gitlab_ci
BATCH_SIZE = 50
def up
return unless Gitlab.com?
model = define_batchable_model(:ci_sources_pipelines)
batch_update_records(model, :partition_id, from: 101, to: 100, source_partition_id: 100)
batch_update_records(model, :source_partition_id, from: 101, to: 100)
end
def down
# no-op
end
private
def batch_update_records(model, column, from:, to:, **updates)
updates.reverse_merge!(column => to)
model
.where(model.arel_table[column].eq(from))
.each_batch(of: BATCH_SIZE) { |batch| update_records(batch, updates) }
end
def update_records(relation, updates)
relation.update_all(updates)
sleep 0.1
end
end
|