summaryrefslogtreecommitdiff
path: root/lib/gitlab/database/reindexing/coordinator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/reindexing/coordinator.rb')
-rw-r--r--lib/gitlab/database/reindexing/coordinator.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/gitlab/database/reindexing/coordinator.rb b/lib/gitlab/database/reindexing/coordinator.rb
index 3e4a83aa2e7..b4f7da999df 100644
--- a/lib/gitlab/database/reindexing/coordinator.rb
+++ b/lib/gitlab/database/reindexing/coordinator.rb
@@ -31,6 +31,25 @@ module Gitlab
end
end
+ def drop
+ try_obtain_lease do
+ Gitlab::AppLogger.info("Removing index #{index.identifier} which is a leftover, temporary index from previous reindexing activity")
+
+ retries = Gitlab::Database::WithLockRetriesOutsideTransaction.new(
+ connection: index.connection,
+ timing_configuration: REMOVE_INDEX_RETRY_CONFIG,
+ klass: self.class,
+ logger: Gitlab::AppLogger
+ )
+
+ retries.run(raise_on_exhaustion: false) do
+ index.connection.tap do |conn|
+ conn.execute("DROP INDEX CONCURRENTLY IF EXISTS #{conn.quote_table_name(index.schema)}.#{conn.quote_table_name(index.name)}")
+ end
+ end
+ end
+ end
+
private
def with_notifications(action)