We have had errors reported due to migrations breaking and are reverting these series of commits.

We have had errors reported due to migrations breaking and are reverting these series of commits.

See: https://meta.discourse.org/t/new-installation-fails-on-migration/147425

This reverts commit 80e832662b719425872e7ac3736fb9fc56d85aca. This reverts commit de5f2d33087c8e9c12f83d573015d275098bd68f. This reverts commit 6b192d29fa095e91cb40b71e76dfc811f4aa205c. This reverts commit a5b582f686c0a8427aad3f6caf9f3a8105e66ee9. This reverts commit 708dd97dfd0380c703678a0ee070dc62880e57f1.

diff --git a/lib/freedom_patches/safe_migrations.rb b/lib/freedom_patches/safe_migrations.rb
index cdf989f..718ffff 100644
--- a/lib/freedom_patches/safe_migrations.rb
+++ b/lib/freedom_patches/safe_migrations.rb
@@ -1,11 +1,5 @@
 # frozen_string_literal: true
 
-# We do not run this in production cause it is intrusive and has
-# potential to break stuff, it also breaks under concurrent use
-# which rake:multisite_migrate uses
-#
-# The protection is only needed in Dev and Test
-if ENV['RAILS_ENV'] != "production"
-  require_dependency 'migration/safe_migrate'
-  Migration::SafeMigrate.patch_active_record!
-end
+require_dependency 'migration/safe_migrate'
+
+Migration::SafeMigrate.patch_active_record!
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
index 8108747..14b2eb4 100644
--- a/lib/tasks/db.rake
+++ b/lib/tasks/db.rake
@@ -66,106 +66,6 @@ task 'db:rollback' => ['environment', 'set_locale'] do |_, args|
   Rake::Task['db:_dump'].invoke
 end
 
-# our optimized version of multisite migrate, we have many sites and we have seeds
-# this ensures we can run migrations concurrently to save huge amounts of time
-Rake::Task['multisite:migrate'].clear
-
-class StdOutDemux
-  def initialize(stdout)
-    @stdout = stdout
-    @data = {}
-  end
-
-  def write(data)
-    (@data[Thread.current] ||= +"") << data
-  end
-
-  def close
-    finish_chunk
-  end
-
-  def finish_chunk
-    data = @data[Thread.current]
-    if data
-      @stdout.write(data)
-      @data.delete Thread.current
-    end
-  end
-end
-
-task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do |_, args|
-  if ENV["RAILS_ENV"] != "production"
-    raise "Multisite migrate is only supported in production"
-  end
-
-  concurrency = (ENV['MIGRATE_CONCURRENCY'].presence || "20").to_i
-
-  puts "Multisite migrator is running using #{concurrency} threads"
-  puts
-
-  queue = Queue.new
-  exceptions = Queue.new
-
-  old_stdout = $stdout
-  $stdout = StdOutDemux.new($stdout)
-
-  RailsMultisite::ConnectionManagement.each_connection do |db|
-    queue << db
-  end
-
-  concurrency.times { queue << :done }
-
-  SeedFu.quiet = true
-
-  (1..concurrency).map do
-    Thread.new {
-      while true
-        db = queue.pop
-        break if db == :done
-
-        RailsMultisite::ConnectionManagement.with_connection(db) do
-          begin
-            puts "Migrating #{db}"
-            ActiveRecord::Tasks::DatabaseTasks.migrate
-            SeedFu.seed(DiscoursePluginRegistry.seed_paths)
-            if !Discourse.skip_post_deployment_migrations? && ENV['SKIP_OPTIMIZE_ICONS'] != '1'
-              SiteIconManager.ensure_optimized!
-            end
-          rescue => e
-            exceptions << [db, e]
-          ensure
-            begin
-              $stdout.finish_chunk
-            rescue => ex
-              STDERR.puts ex.inspect
-              STDERR.puts ex.backtrace
-            end
-          end
-        end
-      end
-    }
-  end.each(&:join)
-
-  $stdout = old_stdout
-
-  if exceptions.length > 0
-    STDERR.puts
-    STDERR.puts "-" * 80
-    STDERR.puts "#{exceptions.length} migrations failed!"
-    while !exceptions.empty?
-      db, e = exceptions.pop
-      STDERR.puts
-      STDERR.puts "Failed to migrate #{db}"
-      STDERR.puts e.inspect
-      STDERR.puts e.backtrace
-      STDERR.puts
-    end
-    exit 1
-  end
-
-  Rake::Task['db:_dump'].invoke
-end
-
 # we need to run seed_fu every time we run rake db:migrate
 task 'db:migrate' => ['load_config', 'environment', 'set_locale'] do |_, args|
 

GitHub sha: 8b46f147

1 Like

This commit has been mentioned on Discourse Meta. There might be relevant details there:

https://meta.discourse.org/t/new-installation-fails-on-migration/147425/4