Fix interactive delays in database migrations with no TTY (#12969)
Fix #12587
This commit is contained in:
		@@ -70,20 +70,22 @@ 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.
 | 
			
		||||
    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'
 | 
			
		||||
    say 'for a very long time. We will pause for 10 seconds to allow you to'
 | 
			
		||||
    say 'interrupt this migration if you are not ready.'
 | 
			
		||||
    say ''
 | 
			
		||||
    say 'This migration has some sections that can be safely interrupted'
 | 
			
		||||
    say 'and restarted later, and will tell you when those are occurring.'
 | 
			
		||||
    say ''
 | 
			
		||||
    say 'For more information, see https://github.com/tootsuite/mastodon/pull/5088'
 | 
			
		||||
    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'
 | 
			
		||||
      say 'for a very long time. We will pause for 10 seconds to allow you to'
 | 
			
		||||
      say 'interrupt this migration if you are not ready.'
 | 
			
		||||
      say ''
 | 
			
		||||
      say 'This migration has some sections that can be safely interrupted'
 | 
			
		||||
      say 'and restarted later, and will tell you when those are occurring.'
 | 
			
		||||
      say ''
 | 
			
		||||
      say 'For more information, see https://github.com/tootsuite/mastodon/pull/5088'
 | 
			
		||||
 | 
			
		||||
    10.downto(1) do |i|
 | 
			
		||||
      say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
 | 
			
		||||
      sleep 1
 | 
			
		||||
      10.downto(1) do |i|
 | 
			
		||||
        say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
 | 
			
		||||
        sleep 1
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    tables = included_columns.map(&:first).uniq
 | 
			
		||||
 
 | 
			
		||||
@@ -20,19 +20,21 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
 | 
			
		||||
  disable_ddl_transaction!
 | 
			
		||||
 | 
			
		||||
  def up
 | 
			
		||||
    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'
 | 
			
		||||
    say 'for a very long time. We will pause for 10 seconds to allow you to'
 | 
			
		||||
    say 'interrupt this migration if you are not ready.'
 | 
			
		||||
    say ''
 | 
			
		||||
    say 'This migration will irreversibly delete user accounts with duplicate'
 | 
			
		||||
    say 'usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames`'
 | 
			
		||||
    say 'task to manually deal with such accounts before running this migration.'
 | 
			
		||||
    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'
 | 
			
		||||
      say 'for a very long time. We will pause for 10 seconds to allow you to'
 | 
			
		||||
      say 'interrupt this migration if you are not ready.'
 | 
			
		||||
      say ''
 | 
			
		||||
      say 'This migration will irreversibly delete user accounts with duplicate'
 | 
			
		||||
      say 'usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames`'
 | 
			
		||||
      say 'task to manually deal with such accounts before running this migration.'
 | 
			
		||||
 | 
			
		||||
    10.downto(1) do |i|
 | 
			
		||||
      say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
 | 
			
		||||
      sleep 1
 | 
			
		||||
      10.downto(1) do |i|
 | 
			
		||||
        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,16 +62,18 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def up
 | 
			
		||||
    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'
 | 
			
		||||
    say 'for a very long time. We will pause for 10 seconds to allow you to'
 | 
			
		||||
    say 'interrupt this migration if you are not ready.'
 | 
			
		||||
    say ''
 | 
			
		||||
    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'
 | 
			
		||||
      say 'for a very long time. We will pause for 10 seconds to allow you to'
 | 
			
		||||
      say 'interrupt this migration if you are not ready.'
 | 
			
		||||
      say ''
 | 
			
		||||
 | 
			
		||||
    10.downto(1) do |i|
 | 
			
		||||
      say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
 | 
			
		||||
      sleep 1
 | 
			
		||||
      10.downto(1) do |i|
 | 
			
		||||
        say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
 | 
			
		||||
        sleep 1
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    migrated  = 0
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user