method
checkout_for_exclusive_access
v8.1.1 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::ConnectionPool
checkout_for_exclusive_access(checkout_timeout)private
No documentation available.
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 1096
def checkout_for_exclusive_access(checkout_timeout)
checkout(checkout_timeout)
rescue ConnectionTimeoutError
# this block can't be easily moved into attempt_to_checkout_all_existing_connections's
# rescue block, because doing so would put it outside of synchronize section, without
# being in a critical section thread_report might become inaccurate
msg = +"could not obtain ownership of all database connections in #{checkout_timeout} seconds"
thread_report = []
@connections.each do |conn|
unless conn.owner == ActiveSupport::IsolatedExecutionState.context
thread_report << "#{conn} is owned by #{conn.owner}"
end
end
msg << " (#{thread_report.join(', ')})" if thread_report.any?
raise ExclusiveConnectionTimeoutError.new(msg, connection_pool: self)
end