summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-02-05 18:26:20 +0000
committerStan Hu <stanhu@gmail.com>2018-02-05 18:26:20 +0000
commit4900390711305ec05e514e7077ab99713d68ff6b (patch)
tree36ef9760afb7b5169c11685abbe7018fd38c031f /db
parent2150ed4094ddb67d7b403cd56360700c80e7d928 (diff)
parente26d993f99ddae8b15c68c7a80a924e12f7d8614 (diff)
downloadgitlab-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.rb19
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