diff options
author | Stan Hu <stanhu@gmail.com> | 2018-02-05 18:26:20 +0000 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-02-05 18:26:20 +0000 |
commit | 4900390711305ec05e514e7077ab99713d68ff6b (patch) | |
tree | 36ef9760afb7b5169c11685abbe7018fd38c031f /db | |
parent | 2150ed4094ddb67d7b403cd56360700c80e7d928 (diff) | |
parent | e26d993f99ddae8b15c68c7a80a924e12f7d8614 (diff) | |
download | gitlab-ce-4900390711305ec05e514e7077ab99713d68ff6b.tar.gz |
Merge branch 'better-issues-closed-at-cleanup' into 'master'
Handle EE edge cases in issues.closed_at migration
Closes gitlab-ee#4803
See merge request gitlab-org/gitlab-ce!16926
Diffstat (limited to 'db')
-rw-r--r-- | db/migrate/20180201145907_migrate_remaining_issues_closed_at.rb | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/db/migrate/20180201145907_migrate_remaining_issues_closed_at.rb b/db/migrate/20180201145907_migrate_remaining_issues_closed_at.rb index 7cb913bb2bf..5a36dec6a9a 100644 --- a/db/migrate/20180201145907_migrate_remaining_issues_closed_at.rb +++ b/db/migrate/20180201145907_migrate_remaining_issues_closed_at.rb @@ -18,12 +18,21 @@ class MigrateRemainingIssuesClosedAt < ActiveRecord::Migration Gitlab::BackgroundMigration.steal('CopyColumn') Gitlab::BackgroundMigration.steal('CleanupConcurrentTypeChange') - # It's possible the cleanup job was killed which means we need to manually - # migrate any remaining rows. - migrate_remaining_rows if migrate_column_type? + if migrate_column_type? + if closed_at_for_type_change_exists? + migrate_remaining_rows + else + # Due to some EE merge problems some environments may not have the + # "closed_at_for_type_change" column. If this is the case we have no + # other option than to migrate the data _right now_. + change_column_type_concurrently(:issues, :closed_at, :datetime_with_timezone) + cleanup_concurrent_column_type_change(:issues, :closed_at) + end + end end def down + # Previous migrations already revert the changes made here. end def migrate_remaining_rows @@ -39,4 +48,8 @@ class MigrateRemainingIssuesClosedAt < ActiveRecord::Migration # migration, thus we don't need to migrate those environments again. column_for('issues', 'closed_at').type == :datetime # rubocop:disable Migration/Datetime end + + def closed_at_for_type_change_exists? + columns('issues').any? { |col| col.name == 'closed_at_for_type_change' } + end end |