Skip to content

Commit 908091f

Browse files
committedMay 16, 2024·
[5.2.1] | Revert "Merged PR 4035: [5.1.2] | Fix Transient fault handling issue with OpenAsync (#1983)"
This reverts commit 80d1f47. # Conflicts: # src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionBasicTests.cs
1 parent 82be9a6 commit 908091f

File tree

4 files changed

+8
-69
lines changed

4 files changed

+8
-69
lines changed
 

‎src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1940,7 +1940,7 @@ private bool TryOpen(TaskCompletionSource<DbConnectionInternal> retry, SqlConnec
19401940
}
19411941
}
19421942

1943-
_applyTransientFaultHandling = (!overrides.HasFlag(SqlConnectionOverrides.OpenWithoutRetry) && connectionOptions != null && connectionOptions.ConnectRetryCount > 0);
1943+
_applyTransientFaultHandling = (!overrides.HasFlag(SqlConnectionOverrides.OpenWithoutRetry) && retry == null && connectionOptions != null && connectionOptions.ConnectRetryCount > 0);
19441944

19451945
if (connectionOptions != null &&
19461946
(connectionOptions.Authentication == SqlAuthenticationMethod.SqlPassword ||
@@ -1969,7 +1969,7 @@ private bool TryOpen(TaskCompletionSource<DbConnectionInternal> retry, SqlConnec
19691969
// does not require GC.KeepAlive(this) because of ReRegisterForFinalize below.
19701970

19711971
// Set future transient fault handling based on connection options
1972-
_applyTransientFaultHandling = connectionOptions != null && connectionOptions.ConnectRetryCount > 0;
1972+
_applyTransientFaultHandling = (retry == null && connectionOptions != null && connectionOptions.ConnectRetryCount > 0);
19731973

19741974
var tdsInnerConnection = (SqlInternalConnectionTds)InnerConnection;
19751975

‎src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlConnection.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2144,7 +2144,7 @@ private bool TryOpen(TaskCompletionSource<DbConnectionInternal> retry, SqlConnec
21442144

21452145
bool result = false;
21462146

2147-
_applyTransientFaultHandling = (!overrides.HasFlag(SqlConnectionOverrides.OpenWithoutRetry) && connectionOptions != null && connectionOptions.ConnectRetryCount > 0);
2147+
_applyTransientFaultHandling = (!overrides.HasFlag(SqlConnectionOverrides.OpenWithoutRetry) && retry == null && connectionOptions != null && connectionOptions.ConnectRetryCount > 0);
21482148

21492149
if (connectionOptions != null &&
21502150
(connectionOptions.Authentication == SqlAuthenticationMethod.SqlPassword ||
@@ -2187,7 +2187,7 @@ private bool TryOpen(TaskCompletionSource<DbConnectionInternal> retry, SqlConnec
21872187
}
21882188

21892189
// Set future transient fault handling based on connection options
2190-
_applyTransientFaultHandling = connectionOptions != null && connectionOptions.ConnectRetryCount > 0;
2190+
_applyTransientFaultHandling = (retry == null && connectionOptions != null && connectionOptions.ConnectRetryCount > 0);
21912191

21922192
return result;
21932193
}

‎src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionBasicTests.cs

+4-64
Original file line numberDiff line numberDiff line change
@@ -57,26 +57,6 @@ public async Task PreLoginEncryptionExcludedTest()
5757
Assert.Contains("The instance of SQL Server you attempted to connect to does not support encryption.", ex.Message, StringComparison.OrdinalIgnoreCase);
5858
}
5959

60-
[ConditionalTheory(typeof(TestUtility), nameof(TestUtility.IsNotArmProcess))]
61-
[InlineData(40613)]
62-
[InlineData(42108)]
63-
[InlineData(42109)]
64-
[PlatformSpecific(TestPlatforms.Windows)]
65-
public async Task TransientFaultTestAsync(uint errorCode)
66-
{
67-
using TransientFaultTDSServer server = TransientFaultTDSServer.StartTestServer(true, true, errorCode);
68-
SqlConnectionStringBuilder builder = new()
69-
{
70-
DataSource = "localhost," + server.Port,
71-
IntegratedSecurity = true,
72-
Encrypt = SqlConnectionEncryptOption.Optional
73-
};
74-
75-
using SqlConnection connection = new(builder.ConnectionString);
76-
await connection.OpenAsync();
77-
Assert.Equal(ConnectionState.Open, connection.State);
78-
}
79-
8060
[ConditionalTheory(typeof(TestUtility), nameof(TestUtility.IsNotArmProcess))]
8161
[InlineData(40613)]
8262
[InlineData(42108)]
@@ -100,54 +80,14 @@ public void TransientFaultTest(uint errorCode)
10080
}
10181
catch (Exception e)
10282
{
83+
if (null != connection)
84+
{
85+
Assert.Equal(ConnectionState.Closed, connection.State);
86+
}
10387
Assert.Fail(e.Message);
10488
}
10589
}
10690

107-
[ConditionalTheory(typeof(TestUtility), nameof(TestUtility.IsNotArmProcess))]
108-
[InlineData(40613)]
109-
[InlineData(42108)]
110-
[InlineData(42109)]
111-
[PlatformSpecific(TestPlatforms.Windows)]
112-
public void TransientFaultDisabledTestAsync(uint errorCode)
113-
{
114-
using TransientFaultTDSServer server = TransientFaultTDSServer.StartTestServer(true, true, errorCode);
115-
SqlConnectionStringBuilder builder = new()
116-
{
117-
DataSource = "localhost," + server.Port,
118-
IntegratedSecurity = true,
119-
ConnectRetryCount = 0,
120-
Encrypt = SqlConnectionEncryptOption.Optional
121-
};
122-
123-
using SqlConnection connection = new(builder.ConnectionString);
124-
Task<SqlException> e = Assert.ThrowsAsync<SqlException>(async () => await connection.OpenAsync());
125-
Assert.Equal(20, e.Result.Class);
126-
Assert.Equal(ConnectionState.Closed, connection.State);
127-
}
128-
129-
[ConditionalTheory(typeof(TestUtility), nameof(TestUtility.IsNotArmProcess))]
130-
[InlineData(40613)]
131-
[InlineData(42108)]
132-
[InlineData(42109)]
133-
[PlatformSpecific(TestPlatforms.Windows)]
134-
public void TransientFaultDisabledTest(uint errorCode)
135-
{
136-
using TransientFaultTDSServer server = TransientFaultTDSServer.StartTestServer(true, true, errorCode);
137-
SqlConnectionStringBuilder builder = new()
138-
{
139-
DataSource = "localhost," + server.Port,
140-
IntegratedSecurity = true,
141-
ConnectRetryCount = 0,
142-
Encrypt = SqlConnectionEncryptOption.Optional
143-
};
144-
145-
using SqlConnection connection = new(builder.ConnectionString);
146-
SqlException e = Assert.Throws<SqlException>(() => connection.Open());
147-
Assert.Equal(20, e.Class);
148-
Assert.Equal(ConnectionState.Closed, connection.State);
149-
}
150-
15191
[Fact]
15292
public void SqlConnectionDbProviderFactoryTest()
15393
{

‎src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS.Servers/TransientFaultTDSServer.cs

-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ private void Dispose(bool isDisposing)
146146
if (isDisposing)
147147
{
148148
_endpoint?.Stop();
149-
RequestCounter = 0;
150149
}
151150
}
152151
}

0 commit comments

Comments
 (0)