Skip to content

Commit 396bab5

Browse files
committed
Move CreateReplaceConnectionContinuation
1 parent efc0c28 commit 396bab5

File tree

2 files changed

+39
-28
lines changed

2 files changed

+39
-28
lines changed

src/Microsoft.Data.SqlClient/src/Microsoft/Data/ProviderBase/DbConnectionFactory.cs

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -47,34 +47,6 @@ protected static Task<DbConnectionInternal> GetCompletedTask()
4747
return s_completedTask ?? (s_completedTask = Task.FromResult<DbConnectionInternal>(null));
4848
}
4949

50-
protected Task<DbConnectionInternal> CreateReplaceConnectionContinuation(Task<DbConnectionInternal> task, DbConnection owningConnection, TaskCompletionSource<DbConnectionInternal> retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionPoolGroup poolGroup, CancellationTokenSource cancellationTokenSource)
51-
{
52-
return task.ContinueWith(
53-
(_) =>
54-
{
55-
System.Transactions.Transaction originalTransaction = ADP.GetCurrentTransaction();
56-
try
57-
{
58-
ADP.SetCurrentTransaction(retry.Task.AsyncState as System.Transactions.Transaction);
59-
var newConnection = CreateNonPooledConnection(owningConnection, poolGroup, userOptions);
60-
if ((oldConnection != null) && (oldConnection.State == ConnectionState.Open))
61-
{
62-
oldConnection.PrepareForReplaceConnection();
63-
oldConnection.Dispose();
64-
}
65-
return newConnection;
66-
}
67-
finally
68-
{
69-
ADP.SetCurrentTransaction(originalTransaction);
70-
}
71-
},
72-
cancellationTokenSource.Token,
73-
TaskContinuationOptions.LongRunning,
74-
TaskScheduler.Default
75-
);
76-
}
77-
7850
protected void TryGetConnectionCompletedContinuation(Task<DbConnectionInternal> task, object state)
7951
{
8052
Tuple<CancellationTokenSource, TaskCompletionSource<DbConnectionInternal>> parameters = (Tuple<CancellationTokenSource, TaskCompletionSource<DbConnectionInternal>>)state;

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlConnectionFactory.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System;
66
using System.Collections.Generic;
7+
using System.Data;
78
using System.Data.Common;
89
using System.Diagnostics;
910
using System.IO;
@@ -629,6 +630,44 @@ private static SqlInternalConnectionTds CreateConnection(
629630
pool,
630631
key.AccessTokenCallback);
631632
}
633+
634+
private Task<DbConnectionInternal> CreateReplaceConnectionContinuation(
635+
Task<DbConnectionInternal> task,
636+
DbConnection owningConnection,
637+
TaskCompletionSource<DbConnectionInternal> retry,
638+
DbConnectionOptions userOptions,
639+
DbConnectionInternal oldConnection,
640+
DbConnectionPoolGroup poolGroup,
641+
CancellationTokenSource cancellationTokenSource)
642+
{
643+
return task.ContinueWith(
644+
_ =>
645+
{
646+
System.Transactions.Transaction originalTransaction = ADP.GetCurrentTransaction();
647+
try
648+
{
649+
ADP.SetCurrentTransaction(retry.Task.AsyncState as System.Transactions.Transaction);
650+
651+
DbConnectionInternal newConnection = CreateNonPooledConnection(owningConnection, poolGroup, userOptions);
652+
653+
if (oldConnection?.State == ConnectionState.Open)
654+
{
655+
oldConnection.PrepareForReplaceConnection();
656+
oldConnection.Dispose();
657+
}
658+
659+
return newConnection;
660+
}
661+
finally
662+
{
663+
ADP.SetCurrentTransaction(originalTransaction);
664+
}
665+
},
666+
cancellationTokenSource.Token,
667+
TaskContinuationOptions.LongRunning,
668+
TaskScheduler.Default
669+
);
670+
}
632671

633672
#if NET
634673
private void Unload(object sender, EventArgs e)

0 commit comments

Comments
 (0)