Finish any remaining jobs for issues.closed_at
In the event of Sidekiq jobs getting lost there may be some rows left to migrate. This migration ensures any remaining jobs are completed and that all data has been migrated. This fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/41595
This commit is contained in:
parent
5b73e0eb35
commit
f01e9c1ef6
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Finish any remaining jobs for issues.closed_at
|
||||
merge_request:
|
||||
author:
|
||||
type: other
|
|
@ -0,0 +1,42 @@
|
|||
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
|
||||
# for more information on how to write migrations for GitLab.
|
||||
|
||||
class MigrateRemainingIssuesClosedAt < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
# Set this constant to true if this migration requires downtime.
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
class Issue < ActiveRecord::Base
|
||||
self.table_name = 'issues'
|
||||
include EachBatch
|
||||
end
|
||||
|
||||
def up
|
||||
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?
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
|
||||
def migrate_remaining_rows
|
||||
Issue.where('closed_at_for_type_change IS NULL AND closed_at IS NOT NULL').each_batch do |batch|
|
||||
batch.update_all('closed_at_for_type_change = closed_at')
|
||||
end
|
||||
|
||||
cleanup_concurrent_column_type_change(:issues, :closed_at)
|
||||
end
|
||||
|
||||
def migrate_column_type?
|
||||
# Some environments may have already executed the previous version of this
|
||||
# migration, thus we don't need to migrate those environments again.
|
||||
column_for('issues', 'closed_at').type == :datetime # rubocop:disable Migration/Datetime
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20180115201419) do
|
||||
ActiveRecord::Schema.define(version: 20180201145907) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
|
Loading…
Reference in New Issue