Fix interactive delays in database migrations with no TTY (#12969)

Fix #12587
master
Eugen Rochko 5 years ago committed by GitHub
parent 10e209d8e0
commit 4363d06986
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      db/migrate/20170918125918_ids_to_bigints.rb
  2. 2
      db/migrate/20180528141303_fix_accounts_unique_index.rb
  3. 2
      db/migrate/20181024224956_migrate_account_conversations.rb

@ -70,6 +70,7 @@ class IdsToBigints < ActiveRecord::Migration[5.1]
included_columns << [:deprecated_preview_cards, :id] if table_exists?(:deprecated_preview_cards)
# Print out a warning that this will probably take a while.
if $stdout.isatty
say ''
say 'WARNING: This migration may take a *long* time for large instances'
say 'It will *not* lock tables for any significant time, but it may run'
@ -85,6 +86,7 @@ class IdsToBigints < ActiveRecord::Migration[5.1]
say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
sleep 1
end
end
tables = included_columns.map(&:first).uniq
table_sizes = {}

@ -20,6 +20,7 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
if $stdout.isatty
say ''
say 'WARNING: This migration may take a *long* time for large instances'
say 'It will *not* lock tables for any significant time, but it may run'
@ -34,6 +35,7 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
sleep 1
end
end
duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_hash

@ -62,6 +62,7 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2]
end
def up
if $stdout.isatty
say ''
say 'WARNING: This migration may take a *long* time for large instances'
say 'It will *not* lock tables for any significant time, but it may run'
@ -73,6 +74,7 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2]
say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
sleep 1
end
end
migrated = 0
last_time = Time.zone.now

Loading…
Cancel
Save