Merge pull request #49106 from Shopify/reconnect-all

Fix `ActiveRecord.disconnect_all!` to not disable reconnect on pools
This commit is contained in:
Jean Boussier 2023-09-01 17:12:31 +02:00 committed by GitHub
commit 85ea227919
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 3 deletions

@ -22,7 +22,7 @@ def discard_pools!
end
def disconnect_all!
INSTANCES.each_key(&:disconnect!)
INSTANCES.each_key { |c| c.disconnect!(automatic_reconnect: true) }
end
end
@ -44,7 +44,7 @@ def connection_name
end
end
def disconnect!
def disconnect!(automatic_reconnect: false)
ActiveSupport::ForkTracker.check!
return unless @pool
@ -52,7 +52,7 @@ def disconnect!
synchronize do
return unless @pool
@pool.automatic_reconnect = false
@pool.automatic_reconnect = automatic_reconnect
@pool.disconnect!
end

@ -0,0 +1,19 @@
# frozen_string_literal: true
require "cases/helper"
require "rack"
class ActiveRecordTest < ActiveRecord::TestCase
unless in_memory_db?
test ".disconnect_all! closes all connections" do
ActiveRecord::Base.connection.active?
assert_predicate ActiveRecord::Base, :connected?
ActiveRecord.disconnect_all!
assert_not_predicate ActiveRecord::Base, :connected?
ActiveRecord::Base.connection.active?
assert_predicate ActiveRecord::Base, :connected?
end
end
end