diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2018-01-18 16:22:41 +0300 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2018-01-18 16:22:41 +0300 |
commit | 0054d3838c07ece45d47086b7fe75aa4cf70726b (patch) | |
tree | 855d1998f033cd6f9d14c1ca08f40f930e541cf4 /spec | |
parent | 50a649530a53a04d2044f9e4c5502586a7ed0c59 (diff) |
Reduce UPDATEs for background column type changes
Prior to this commit we would essentially update all rows in a table,
even those where the source column (e.g. `issues.closed_at`) was NULL.
This in turn could lead to statement timeouts when using the default
batch size of 10 000 rows per job.
To work around this we don't schedule jobs for rows where the source
value is NULL. We also don't update rows where the source column is NULL
(as an extra precaution) or the target column already has a non-NULL
value. Using this approach it should be possible to update 10 000 rows
in the "issues" table in about 7.5 - 8 seconds.
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/42158
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/database/migration_helpers_spec.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/spec/lib/gitlab/database/migration_helpers_spec.rb b/spec/lib/gitlab/database/migration_helpers_spec.rb index 43761c2fe0c..1de3a14b809 100644 --- a/spec/lib/gitlab/database/migration_helpers_spec.rb +++ b/spec/lib/gitlab/database/migration_helpers_spec.rb @@ -1038,7 +1038,7 @@ describe Gitlab::Database::MigrationHelpers do end describe '#change_column_type_using_background_migration' do - let!(:issue) { create(:issue) } + let!(:issue) { create(:issue, :closed, closed_at: Time.zone.now) } let(:issue_model) do Class.new(ActiveRecord::Base) do |