From 5f0fc639dada7a58d2bb5524b4ec081ee6cc143f Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Thu, 7 Apr 2022 20:17:49 +0200
Subject: [PATCH] Fix error re-running some migrations if they get interrupted
 at the wrong moment (#17989)

---
 lib/mastodon/migration_helpers.rb | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb
index e920ff88f..beef83362 100644
--- a/lib/mastodon/migration_helpers.rb
+++ b/lib/mastodon/migration_helpers.rb
@@ -813,6 +813,9 @@ module Mastodon
     def update_index(table_name, index_name, columns, **index_options)
       if index_name_exists?(table_name, "#{index_name}_new") && index_name_exists?(table_name, index_name)
         remove_index table_name, "#{index_name}_new"
+      elsif index_name_exists?(table_name, "#{index_name}_new")
+        # Very unlikely case where the script has been interrupted during/after removal but before renaming
+        rename_index table_name, "#{index_name}_new", index_name
       end
 
       begin