gitlab-org--gitlab-foss/spec/support/database_connection_helpers.rb
Timothy Andrew f95fa7145b Write a spec covering the race condition during group deletion.
- Use multiple threads / database connections to:

  1. Escape the transaction the spec seems to be running
     in (`config.use_transactional_fixtures` is off, but
     `ActiveRecord::Base.connection.open_transactions` is not empty
     at the beginning of the spec.

  2. Simulate a Sidekiq worker performing the hard delete outside of the
     soft-delete transaction.

- The spec is a little clunky, but it was the smallest thing I could get
  working - and even this took a couple of hours. Let me know if you
  have any suggestions to improve it!
2016-11-18 14:27:13 +05:30

9 lines
200 B
Ruby

module DatabaseConnectionHelpers
def run_with_new_database_connection
pool = ActiveRecord::Base.connection_pool
conn = pool.checkout
yield conn
ensure
pool.checkin(conn)
end
end