Skip to content

Commit eb07cf8

Browse files
committed
Set activity tags on failure path. Fixes #1196
An (optional) Activity object is passed in, and all tags are set on it as soon as they are known. This allows the Activity to record the tags even for a failing operation. Signed-off-by: Bradley Grainger <[email protected]>
1 parent 0dd5b62 commit eb07cf8

File tree

5 files changed

+183
-56
lines changed

5 files changed

+183
-56
lines changed

src/MySqlConnector/Core/ConnectionPool.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ internal sealed class ConnectionPool : IDisposable
1616

1717
public SslProtocols SslProtocols { get; set; }
1818

19-
public async ValueTask<ServerSession> GetSessionAsync(MySqlConnection connection, int startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken)
19+
public async ValueTask<ServerSession> GetSessionAsync(MySqlConnection connection, int startTickCount, Activity? activity, IOBehavior ioBehavior, CancellationToken cancellationToken)
2020
{
2121
cancellationToken.ThrowIfCancellationRequested();
2222

@@ -86,14 +86,15 @@ public async ValueTask<ServerSession> GetSessionAsync(MySqlConnection connection
8686
m_leasedSessions.Add(session.Id, session);
8787
leasedSessionsCountPooled = m_leasedSessions.Count;
8888
}
89+
ActivitySourceHelper.CopyTags(session.ActivityTags, activity);
8990
if (Log.IsTraceEnabled())
9091
Log.Trace("Pool{0} returning pooled Session{1} to caller; LeasedSessionsCount={2}", m_logArguments[0], session.Id, leasedSessionsCountPooled);
9192
return session;
9293
}
9394
}
9495

9596
// create a new session
96-
session = await ConnectSessionAsync(connection, "Pool{0} no pooled session available; created new Session{1}", startTickCount, ioBehavior, cancellationToken).ConfigureAwait(false);
97+
session = await ConnectSessionAsync(connection, "Pool{0} no pooled session available; created new Session{1}", startTickCount, activity, ioBehavior, cancellationToken).ConfigureAwait(false);
9798
AdjustHostConnectionCount(session, 1);
9899
session.OwningConnection = new(connection);
99100
int leasedSessionsCountNew;
@@ -372,7 +373,7 @@ private async Task CreateMinimumPooledSessions(MySqlConnection connection, IOBeh
372373

373374
try
374375
{
375-
var session = await ConnectSessionAsync(connection, "Pool{0} created Session{1} to reach minimum pool size", Environment.TickCount, ioBehavior, cancellationToken).ConfigureAwait(false);
376+
var session = await ConnectSessionAsync(connection, "Pool{0} created Session{1} to reach minimum pool size", Environment.TickCount, null, ioBehavior, cancellationToken).ConfigureAwait(false);
376377
AdjustHostConnectionCount(session, 1);
377378
lock (m_sessions)
378379
m_sessions.AddFirst(session);
@@ -385,12 +386,12 @@ private async Task CreateMinimumPooledSessions(MySqlConnection connection, IOBeh
385386
}
386387
}
387388

388-
private async ValueTask<ServerSession> ConnectSessionAsync(MySqlConnection connection, string logMessage, int startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken)
389+
private async ValueTask<ServerSession> ConnectSessionAsync(MySqlConnection connection, string logMessage, int startTickCount, Activity? activity, IOBehavior ioBehavior, CancellationToken cancellationToken)
389390
{
390391
var session = new ServerSession(this, m_generation, Interlocked.Increment(ref m_lastSessionId));
391392
if (Log.IsDebugEnabled())
392393
Log.Debug(logMessage, m_logArguments[0], session.Id);
393-
var statusInfo = await session.ConnectAsync(ConnectionSettings, connection, startTickCount, m_loadBalancer, ioBehavior, cancellationToken).ConfigureAwait(false);
394+
var statusInfo = await session.ConnectAsync(ConnectionSettings, connection, startTickCount, m_loadBalancer, activity, ioBehavior, cancellationToken).ConfigureAwait(false);
394395
Exception? redirectionException = null;
395396

396397
if (statusInfo is not null && statusInfo.StartsWith("Location: mysql://", StringComparison.Ordinal))
@@ -411,7 +412,7 @@ private async ValueTask<ServerSession> ConnectSessionAsync(MySqlConnection conne
411412
var redirectedSession = new ServerSession(this, m_generation, Interlocked.Increment(ref m_lastSessionId));
412413
try
413414
{
414-
await redirectedSession.ConnectAsync(redirectedSettings, connection, startTickCount, m_loadBalancer, ioBehavior, cancellationToken).ConfigureAwait(false);
415+
await redirectedSession.ConnectAsync(redirectedSettings, connection, startTickCount, m_loadBalancer, activity, ioBehavior, cancellationToken).ConfigureAwait(false);
415416
}
416417
catch (Exception ex)
417418
{

src/MySqlConnector/Core/ServerSession.cs

Lines changed: 95 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,7 @@ public ServerSession(ConnectionPool? pool, int poolGeneration, int id)
4040
PoolGeneration = poolGeneration;
4141
HostName = "";
4242
m_logArguments = new object?[] { "{0}".FormatInvariant(Id), null };
43-
m_activityTags = new ActivityTagsCollection
44-
{
45-
{ ActivitySourceHelper.DatabaseSystemTagName, ActivitySourceHelper.DatabaseSystemValue },
46-
};
43+
m_activityTags = new ActivityTagsCollection();
4744
Log.Trace("Session{0} created new session", m_logArguments);
4845
}
4946

@@ -394,7 +391,7 @@ public async Task DisposeAsync(IOBehavior ioBehavior, CancellationToken cancella
394391
m_state = State.Closed;
395392
}
396393

397-
public async Task<string?> ConnectAsync(ConnectionSettings cs, MySqlConnection connection, int startTickCount, ILoadBalancer? loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken)
394+
public async Task<string?> ConnectAsync(ConnectionSettings cs, MySqlConnection connection, int startTickCount, ILoadBalancer? loadBalancer, Activity? activity, IOBehavior ioBehavior, CancellationToken cancellationToken)
398395
{
399396
string? statusInfo = null;
400397

@@ -406,6 +403,24 @@ public async Task DisposeAsync(IOBehavior ioBehavior, CancellationToken cancella
406403
m_state = State.Connecting;
407404
}
408405

406+
// set activity tags
407+
{
408+
var connectionString = cs.ConnectionStringBuilder.GetConnectionString(cs.ConnectionStringBuilder.PersistSecurityInfo);
409+
m_activityTags.Add(ActivitySourceHelper.DatabaseSystemTagName, ActivitySourceHelper.DatabaseSystemValue);
410+
m_activityTags.Add(ActivitySourceHelper.DatabaseConnectionStringTagName, connectionString);
411+
m_activityTags.Add(ActivitySourceHelper.DatabaseUserTagName, cs.UserID);
412+
if (cs.Database.Length != 0)
413+
m_activityTags.Add(ActivitySourceHelper.DatabaseNameTagName, cs.Database);
414+
if (activity is { IsAllDataRequested: true })
415+
{
416+
activity.SetTag(ActivitySourceHelper.DatabaseSystemTagName, ActivitySourceHelper.DatabaseSystemValue);
417+
activity.SetTag(ActivitySourceHelper.DatabaseConnectionStringTagName, connectionString);
418+
activity.SetTag(ActivitySourceHelper.DatabaseUserTagName, cs.UserID);
419+
if (cs.Database.Length != 0)
420+
activity.SetTag(ActivitySourceHelper.DatabaseNameTagName, cs.Database);
421+
}
422+
}
423+
409424
// TLS negotiation should automatically fall back to the best version supported by client and server. However,
410425
// Windows Schannel clients will fail to connect to a yaSSL-based MySQL Server if TLS 1.2 is requested and
411426
// have to use only TLS 1.1: https://github.com/mysql-net/MySqlConnector/pull/101
@@ -424,11 +439,11 @@ public async Task DisposeAsync(IOBehavior ioBehavior, CancellationToken cancella
424439

425440
var connected = false;
426441
if (cs.ConnectionProtocol == MySqlConnectionProtocol.Sockets)
427-
connected = await OpenTcpSocketAsync(cs, loadBalancer ?? throw new ArgumentNullException(nameof(loadBalancer)), ioBehavior, cancellationToken).ConfigureAwait(false);
442+
connected = await OpenTcpSocketAsync(cs, loadBalancer ?? throw new ArgumentNullException(nameof(loadBalancer)), activity, ioBehavior, cancellationToken).ConfigureAwait(false);
428443
else if (cs.ConnectionProtocol == MySqlConnectionProtocol.UnixSocket)
429-
connected = await OpenUnixSocketAsync(cs, ioBehavior, cancellationToken).ConfigureAwait(false);
444+
connected = await OpenUnixSocketAsync(cs, activity, ioBehavior, cancellationToken).ConfigureAwait(false);
430445
else if (cs.ConnectionProtocol == MySqlConnectionProtocol.NamedPipe)
431-
connected = await OpenNamedPipeAsync(cs, startTickCount, ioBehavior, cancellationToken).ConfigureAwait(false);
446+
connected = await OpenNamedPipeAsync(cs, startTickCount, activity, ioBehavior, cancellationToken).ConfigureAwait(false);
432447
if (!connected)
433448
{
434449
lock (m_lock)
@@ -465,6 +480,14 @@ public async Task DisposeAsync(IOBehavior ioBehavior, CancellationToken cancella
465480
m_useCompression = cs.UseCompression && (initialHandshake.ProtocolCapabilities & ProtocolCapabilities.Compress) != 0;
466481
CancellationTimeout = cs.CancellationTimeout;
467482

483+
// set activity tags
484+
{
485+
var connectionId = ConnectionId.ToString(CultureInfo.InvariantCulture);
486+
m_activityTags[ActivitySourceHelper.DatabaseConnectionIdTagName] = connectionId;
487+
if (activity is { IsAllDataRequested: true })
488+
activity.SetTag(ActivitySourceHelper.DatabaseConnectionIdTagName, connectionId);
489+
}
490+
468491
m_supportsComMulti = (initialHandshake.ProtocolCapabilities & ProtocolCapabilities.MariaDbComMulti) != 0;
469492
m_supportsConnectionAttributes = (initialHandshake.ProtocolCapabilities & ProtocolCapabilities.ConnectionAttributes) != 0;
470493
m_supportsDeprecateEof = (initialHandshake.ProtocolCapabilities & ProtocolCapabilities.DeprecateEof) != 0;
@@ -569,12 +592,6 @@ public async Task DisposeAsync(IOBehavior ioBehavior, CancellationToken cancella
569592
await GetRealServerDetailsAsync(ioBehavior, CancellationToken.None).ConfigureAwait(false);
570593

571594
m_payloadHandler.ByteHandler.RemainingTimeout = Constants.InfiniteTimeout;
572-
573-
m_activityTags.Add(ActivitySourceHelper.DatabaseConnectionIdTagName, ConnectionId.ToString(CultureInfo.InvariantCulture));
574-
m_activityTags.Add(ActivitySourceHelper.DatabaseConnectionStringTagName, cs.ConnectionStringBuilder.GetConnectionString(cs.ConnectionStringBuilder.PersistSecurityInfo));
575-
m_activityTags.Add(ActivitySourceHelper.DatabaseUserTagName, cs.UserID);
576-
if (cs.Database.Length != 0)
577-
m_activityTags.Add(ActivitySourceHelper.DatabaseNameTagName, cs.Database);
578595
}
579596
catch (ArgumentException ex)
580597
{
@@ -1013,8 +1030,22 @@ private void VerifyConnected()
10131030
}
10141031
}
10151032

1016-
private async Task<bool> OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken)
1033+
private async Task<bool> OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, Activity? activity, IOBehavior ioBehavior, CancellationToken cancellationToken)
10171034
{
1035+
// set activity tags for TCP/IP
1036+
{
1037+
m_activityTags.Add(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportTcpIpValue);
1038+
string? port = cs.Port == 3306 ? default : cs.Port.ToString(CultureInfo.InvariantCulture);
1039+
if (port is not null)
1040+
m_activityTags.Add(ActivitySourceHelper.NetPeerPortTagName, port);
1041+
if (activity is { IsAllDataRequested: true })
1042+
{
1043+
activity.SetTag(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportTcpIpValue);
1044+
if (port is not null)
1045+
activity.SetTag(ActivitySourceHelper.NetPeerPortTagName, port);
1046+
}
1047+
}
1048+
10181049
var hostNames = loadBalancer.LoadBalance(cs.HostNames!);
10191050
for (var hostNameIndex = 0; hostNameIndex < hostNames.Count; hostNameIndex++)
10201051
{
@@ -1041,8 +1072,28 @@ private async Task<bool> OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer
10411072
for (var ipAddressIndex = 0; ipAddressIndex < ipAddresses.Length; ipAddressIndex++)
10421073
{
10431074
var ipAddress = ipAddresses[ipAddressIndex];
1075+
var ipAddressString = ipAddress.ToString();
10441076
if (Log.IsTraceEnabled())
1045-
Log.Trace("Session{0} connecting to IpAddress {1} ({2} of {3}) for HostName '{4}' ({5} of {6})", m_logArguments[0], ipAddress, ipAddressIndex + 1, ipAddresses.Length, hostName, hostNameIndex + 1, hostNames.Count);
1077+
Log.Trace("Session{0} connecting to IpAddress {1} ({2} of {3}) for HostName '{4}' ({5} of {6})", m_logArguments[0], ipAddressString, ipAddressIndex + 1, ipAddresses.Length, hostName, hostNameIndex + 1, hostNames.Count);
1078+
1079+
// set activity tags for the current IP address/hostname
1080+
{
1081+
m_activityTags[ActivitySourceHelper.NetPeerIpTagName] = ipAddressString;
1082+
if (ipAddressString != hostName)
1083+
m_activityTags[ActivitySourceHelper.NetPeerNameTagName] = hostName;
1084+
else
1085+
m_activityTags.Remove(ActivitySourceHelper.NetPeerNameTagName);
1086+
1087+
if (activity is { IsAllDataRequested: true })
1088+
{
1089+
activity.SetTag(ActivitySourceHelper.NetPeerIpTagName, ipAddressString);
1090+
if (ipAddressString != hostName)
1091+
activity.SetTag(ActivitySourceHelper.NetPeerNameTagName, hostName);
1092+
else
1093+
activity.SetTag(ActivitySourceHelper.NetPeerNameTagName, null);
1094+
}
1095+
}
1096+
10461097
TcpClient? tcpClient = null;
10471098
try
10481099
{
@@ -1118,14 +1169,6 @@ private async Task<bool> OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer
11181169
m_socket.NoDelay = true;
11191170
m_stream = m_tcpClient.GetStream();
11201171
m_socket.SetKeepAlive(cs.Keepalive);
1121-
1122-
m_activityTags.Add(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportTcpIpValue);
1123-
var ipAddressString = ipAddress.ToString();
1124-
m_activityTags.Add(ActivitySourceHelper.NetPeerIpTagName, ipAddressString);
1125-
if (ipAddressString != hostName)
1126-
m_activityTags.Add(ActivitySourceHelper.NetPeerNameTagName, hostName);
1127-
if (cs.Port != 3306)
1128-
m_activityTags.Add(ActivitySourceHelper.NetPeerPortTagName, cs.Port.ToString(CultureInfo.InvariantCulture));
11291172
}
11301173
catch (ObjectDisposedException) when (cancellationToken.IsCancellationRequested)
11311174
{
@@ -1145,10 +1188,22 @@ private async Task<bool> OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer
11451188
return false;
11461189
}
11471190

1148-
private async Task<bool> OpenUnixSocketAsync(ConnectionSettings cs, IOBehavior ioBehavior, CancellationToken cancellationToken)
1191+
private async Task<bool> OpenUnixSocketAsync(ConnectionSettings cs, Activity? activity, IOBehavior ioBehavior, CancellationToken cancellationToken)
11491192
{
11501193
m_logArguments[1] = cs.UnixSocket;
11511194
Log.Trace("Session{0} connecting to UNIX Socket '{1}'", m_logArguments);
1195+
1196+
// set activity tags
1197+
{
1198+
m_activityTags.Add(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportUnixValue);
1199+
m_activityTags.Add(ActivitySourceHelper.NetPeerNameTagName, cs.UnixSocket);
1200+
if (activity is { IsAllDataRequested: true })
1201+
{
1202+
activity.SetTag(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportUnixValue);
1203+
activity.SetTag(ActivitySourceHelper.NetPeerNameTagName, cs.UnixSocket);
1204+
}
1205+
}
1206+
11521207
var socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP);
11531208
var unixEp = new UnixDomainSocketEndPoint(cs.UnixSocket!);
11541209
try
@@ -1183,9 +1238,6 @@ private async Task<bool> OpenUnixSocketAsync(ConnectionSettings cs, IOBehavior i
11831238
m_socket = socket;
11841239
m_stream = new NetworkStream(socket);
11851240

1186-
m_activityTags.Add(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportUnixValue);
1187-
m_activityTags.Add(ActivitySourceHelper.NetPeerNameTagName, cs.UnixSocket);
1188-
11891241
lock (m_lock)
11901242
m_state = State.Connected;
11911243
return true;
@@ -1194,10 +1246,24 @@ private async Task<bool> OpenUnixSocketAsync(ConnectionSettings cs, IOBehavior i
11941246
return false;
11951247
}
11961248

1197-
private async Task<bool> OpenNamedPipeAsync(ConnectionSettings cs, int startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken)
1249+
private async Task<bool> OpenNamedPipeAsync(ConnectionSettings cs, int startTickCount, Activity? activity, IOBehavior ioBehavior, CancellationToken cancellationToken)
11981250
{
11991251
if (Log.IsTraceEnabled())
12001252
Log.Trace("Session{0} connecting to NamedPipe '{1}' on Server '{2}'", m_logArguments[0], cs.PipeName, cs.HostNames![0]);
1253+
1254+
// set activity tags
1255+
{
1256+
// see https://docs.microsoft.com/en-us/windows/win32/ipc/pipe-names for pipe name format
1257+
var pipeName = @"\\" + cs.HostNames![0] + @"\pipe\" + cs.PipeName;
1258+
m_activityTags.Add(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportNamedPipeValue);
1259+
m_activityTags.Add(ActivitySourceHelper.NetPeerNameTagName, pipeName);
1260+
if (activity is { IsAllDataRequested: true })
1261+
{
1262+
activity.SetTag(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportNamedPipeValue);
1263+
activity.SetTag(ActivitySourceHelper.NetPeerNameTagName, pipeName);
1264+
}
1265+
}
1266+
12011267
var namedPipeStream = new NamedPipeClientStream(cs.HostNames![0], cs.PipeName, PipeDirection.InOut, PipeOptions.Asynchronous);
12021268
var timeout = Math.Max(1, cs.ConnectionTimeoutMilliseconds - unchecked(Environment.TickCount - startTickCount));
12031269
try
@@ -1228,10 +1294,6 @@ private async Task<bool> OpenNamedPipeAsync(ConnectionSettings cs, int startTick
12281294
{
12291295
m_stream = namedPipeStream;
12301296

1231-
// see https://docs.microsoft.com/en-us/windows/win32/ipc/pipe-names for pipe name format
1232-
m_activityTags.Add(ActivitySourceHelper.NetTransportTagName, ActivitySourceHelper.NetTransportNamedPipeValue);
1233-
m_activityTags.Add(ActivitySourceHelper.NetPeerNameTagName, @"\\" + cs.HostNames![0] + @"\pipe\" + cs.PipeName);
1234-
12351297
lock (m_lock)
12361298
m_state = State.Connected;
12371299
return true;
@@ -1695,7 +1757,6 @@ private void ShutdownSocket()
16951757
SafeDispose(ref m_socket);
16961758
Utility.Dispose(ref m_clientCertificate);
16971759
m_activityTags.Clear();
1698-
m_activityTags.Add(ActivitySourceHelper.DatabaseSystemTagName, ActivitySourceHelper.DatabaseSystemValue);
16991760
}
17001761

17011762
/// <summary>

src/MySqlConnector/MySqlConnection.cs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ internal async Task OpenAsync(IOBehavior? ioBehavior, CancellationToken cancella
410410
if (existingConnection is not null)
411411
{
412412
TakeSessionFrom(existingConnection);
413-
CopyActivityTags(m_session!, activity);
413+
ActivitySourceHelper.CopyTags(m_session!.ActivityTags, activity);
414414
m_hasBeenOpened = true;
415415
SetState(ConnectionState.Open);
416416
return;
@@ -419,9 +419,7 @@ internal async Task OpenAsync(IOBehavior? ioBehavior, CancellationToken cancella
419419

420420
try
421421
{
422-
m_session = await CreateSessionAsync(pool, openStartTickCount, ioBehavior, cancellationToken).ConfigureAwait(false);
423-
CopyActivityTags(m_session, activity);
424-
422+
m_session = await CreateSessionAsync(pool, openStartTickCount, activity, ioBehavior, cancellationToken).ConfigureAwait(false);
425423
m_hasBeenOpened = true;
426424
SetState(ConnectionState.Open);
427425
}
@@ -455,15 +453,6 @@ internal async Task OpenAsync(IOBehavior? ioBehavior, CancellationToken cancella
455453
activity.SetException(ex);
456454
throw;
457455
}
458-
459-
static void CopyActivityTags(ServerSession session, Activity? activity)
460-
{
461-
if (activity is { IsAllDataRequested: true })
462-
{
463-
foreach (var tag in session.ActivityTags)
464-
activity.SetTag(tag.Key, tag.Value);
465-
}
466-
}
467456
}
468457

469458
/// <summary>
@@ -909,7 +898,7 @@ internal void FinishQuerying(bool hasWarnings)
909898
}
910899
}
911900

912-
private async ValueTask<ServerSession> CreateSessionAsync(ConnectionPool? pool, int startTickCount, IOBehavior? ioBehavior, CancellationToken cancellationToken)
901+
private async ValueTask<ServerSession> CreateSessionAsync(ConnectionPool? pool, int startTickCount, Activity? activity, IOBehavior? ioBehavior, CancellationToken cancellationToken)
913902
{
914903
var connectionSettings = GetInitializedConnectionSettings();
915904
var actualIOBehavior = ioBehavior ?? (connectionSettings.ForceSynchronous ? IOBehavior.Synchronous : IOBehavior.Asynchronous);
@@ -930,7 +919,7 @@ private async ValueTask<ServerSession> CreateSessionAsync(ConnectionPool? pool,
930919
if (pool is not null)
931920
{
932921
// this returns an open session
933-
return await pool.GetSessionAsync(this, startTickCount, actualIOBehavior, connectToken).ConfigureAwait(false);
922+
return await pool.GetSessionAsync(this, startTickCount, activity, actualIOBehavior, connectToken).ConfigureAwait(false);
934923
}
935924
else
936925
{
@@ -941,7 +930,7 @@ private async ValueTask<ServerSession> CreateSessionAsync(ConnectionPool? pool,
941930
var session = new ServerSession();
942931
session.OwningConnection = new WeakReference<MySqlConnection>(this);
943932
Log.Debug("Created new non-pooled Session{0}", session.Id);
944-
await session.ConnectAsync(connectionSettings, this, startTickCount, loadBalancer, actualIOBehavior, connectToken).ConfigureAwait(false);
933+
await session.ConnectAsync(connectionSettings, this, startTickCount, loadBalancer, activity, actualIOBehavior, connectToken).ConfigureAwait(false);
945934
return session;
946935
}
947936
}

0 commit comments

Comments
 (0)