|
|
|
|
@ -41,12 +41,17 @@ class ConnectionPool::SharedConnectionPool < ConnectionPool
|
|
|
|
|
# ConnectionPool 2.4+ calls `checkin(force: true)` after fork.
|
|
|
|
|
# When this happens, we should remove all connections from Thread.current
|
|
|
|
|
|
|
|
|
|
::Thread.current.keys.each do |name| # rubocop:disable Style/HashEachMethods
|
|
|
|
|
next unless name.to_s.start_with?("#{@key}-")
|
|
|
|
|
connection_keys = ::Thread.current.keys.select { |key| key.to_s.start_with?("#{@key}-") && !key.to_s.start_with?("#{@key_count}-") }
|
|
|
|
|
count_keys = ::Thread.current.keys.select { |key| key.to_s.start_with?("#{@key_count}-") }
|
|
|
|
|
|
|
|
|
|
@available.push(::Thread.current[name])
|
|
|
|
|
::Thread.current[name] = nil
|
|
|
|
|
connection_keys.each do |key|
|
|
|
|
|
@available.push(::Thread.current[key])
|
|
|
|
|
::Thread.current[key] = nil
|
|
|
|
|
end
|
|
|
|
|
count_keys.each do |key|
|
|
|
|
|
::Thread.current[key] = nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
elsif ::Thread.current[key(preferred_tag)]
|
|
|
|
|
if ::Thread.current[key_count(preferred_tag)] == 1
|
|
|
|
|
@available.push(::Thread.current[key(preferred_tag)])
|
|
|
|
|
|