diff options
Diffstat (limited to 'lib/gitlab/database/multi_threaded_migration.rb')
-rw-r--r-- | lib/gitlab/database/multi_threaded_migration.rb | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/lib/gitlab/database/multi_threaded_migration.rb b/lib/gitlab/database/multi_threaded_migration.rb deleted file mode 100644 index 65a6cb8e369..00000000000 --- a/lib/gitlab/database/multi_threaded_migration.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -module Gitlab - module Database - module MultiThreadedMigration - MULTI_THREAD_AR_CONNECTION = :thread_local_ar_connection - - # This overwrites the default connection method so that every thread can - # use a thread-local connection, while still supporting all of Rails' - # migration methods. - def connection - Thread.current[MULTI_THREAD_AR_CONNECTION] || - ActiveRecord::Base.connection - end - - # Starts a thread-pool for N threads, along with N threads each using a - # single connection. The provided block is yielded from inside each - # thread. - # - # Example: - # - # with_multiple_threads(4) do - # execute('SELECT ...') - # end - # - # thread_count - The number of threads to start. - # - # join - When set to true this method will join the threads, blocking the - # caller until all threads have finished running. - # - # Returns an Array containing the started threads. - def with_multiple_threads(thread_count, join: true) - pool = Gitlab::Database.create_connection_pool(thread_count) - - threads = Array.new(thread_count) do - Thread.new do - pool.with_connection do |connection| - Thread.current[MULTI_THREAD_AR_CONNECTION] = connection - yield - ensure - Thread.current[MULTI_THREAD_AR_CONNECTION] = nil - end - end - end - - threads.each(&:join) if join - - threads - end - end - end -end |