From d1122070b124bcdafac05ee9472447d3879f8761 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Wed, 8 Nov 2023 12:10:21 +0000 Subject: [PATCH] Reset connections after READ COMMITTED isolation test (#1132) --- test/cases/transaction_test_sqlserver.rb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/cases/transaction_test_sqlserver.rb b/test/cases/transaction_test_sqlserver.rb index f48bb2db1..9f1e0ae63 100644 --- a/test/cases/transaction_test_sqlserver.rb +++ b/test/cases/transaction_test_sqlserver.rb @@ -53,17 +53,10 @@ class TransactionTestSQLServer < ActiveRecord::TestCase end describe "when READ_COMMITTED_SNAPSHOT is set" do - before do + it "should use READ COMMITTED as an isolation level" do connection.execute "ALTER DATABASE [#{connection.current_database}] SET ALLOW_SNAPSHOT_ISOLATION ON" connection.execute "ALTER DATABASE [#{connection.current_database}] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE" - end - - after do - connection.execute "ALTER DATABASE [#{connection.current_database}] SET ALLOW_SNAPSHOT_ISOLATION OFF" - connection.execute "ALTER DATABASE [#{connection.current_database}] SET READ_COMMITTED_SNAPSHOT OFF WITH ROLLBACK IMMEDIATE" - end - it "should use READ COMMITTED as an isolation level" do _(connection.user_options_isolation_level).must_match "read committed snapshot" Ship.transaction(isolation: :serializable) do @@ -74,6 +67,12 @@ class TransactionTestSQLServer < ActiveRecord::TestCase # "READ COMMITTED", and that no exception was raised (it's reported back # by SQL Server as "read committed snapshot"). _(connection.user_options_isolation_level).must_match "read committed snapshot" + ensure + connection.execute "ALTER DATABASE [#{connection.current_database}] SET ALLOW_SNAPSHOT_ISOLATION OFF" + connection.execute "ALTER DATABASE [#{connection.current_database}] SET READ_COMMITTED_SNAPSHOT OFF WITH ROLLBACK IMMEDIATE" + + # Reset all connections. Otherwise, the next test may fail with error 'DBPROCESS is dead or not enabled'. Not sure why. + ActiveRecord::Base.connection_handler.clear_all_connections! end end