MySqlConnector
MySqlConnector copied to clipboard
CancellationTimeout is not respected on cancellation error
Software versions MySqlConnector version: 2.2.5 Server type (MySQL, MariaDB, Aurora, etc.) and version: MySQL 8.0 .NET version: 7.0
Describe the bug
This is a child issue from #1302.
When opening of cancellation connection results in an error, the cancellation is retried 10 times, each retry lasting for a duration of CancellationTimeout. This increases request latency to a huge amount of seconds, which affect metrics a lot, holds resources like threads, and so on.

Exception
Log
[INFO] ConnectionPool Pool1 creating new connection pool for ConnectionString: Server=we-mysql8-loyalty-dodo.mysql.database.azure.com;Port=3306;User ID=user@we-mysql8-loyalty-dodo;Database=loyalty;SSL Mode=Preferred;Allow User Variables=True;Character Set=utf8;Convert Zero DateTime=True;Server Redirection Mode=Required
[TRACE] ConnectionPool Pool1 waiting for an available session
[TRACE] ServerSession Session1.1 created new session
[DEBUG] ConnectionPool Pool1 no pooled session available; created new Session1.1
[TRACE] ServerSession Session1.1 connecting to IpAddress 13.69.105.208 (1 of 1) for HostName 'we-mysql8-loyalty-dodo.mysql.database.azure.com' (1 of 1)
[TRACE] ServerSession Session1.1 connected to IpAddress 13.69.105.208 for HostName 'we-mysql8-loyalty-dodo.mysql.database.azure.com' with local Port 45522
[TRACE] ServerSession Session1.1 server sent AuthPluginName=mysql_native_password
[DEBUG] ServerSession Session1.1 made connection; ServerVersion=5.6.47.0; ConnectionId=62741; Compression=False; Attributes=True; DeprecateEof=False; Ssl=True; SessionTrack=False; Pipelining=True; QueryAttributes=False
[TRACE] ServerSession Session1.1 initializing TLS connection
[DEBUG] ServerSession Session1.1 connected TLS with SslProtocol=Tls12, NegotiatedCipherSuite=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
[TRACE] ServerSession Session1.1 creating connection attributes
[TRACE] ServerSession Session1.1 switching to AuthenticationMethod 'mysql_native_password'
[DEBUG] ServerSession Session1.1 detected proxy; getting CONNECTION_ID(), VERSION() from server
[DEBUG] ServerSession Session1.1 changing ConnectionIdOld 62741 to ConnectionId 114976 and ServerVersionOld 5.6.47.0 to ServerVersion 8.0.15
[TRACE] ConnectionPool Session1.1 has server redirection header Location: mysql://fb5c84825c32.tr18067.westeurope1-a.worker.database.windows.net:16012/user=user@fb5c84825c32
[DEBUG] ConnectionPool Pool1 opening new connection to Host=fb5c84825c32.tr18067.westeurope1-a.worker.database.windows.net; Port=16012; User=user@fb5c84825c32
[TRACE] ServerSession Session1.2 created new session
[TRACE] ServerSession Session1.2 connecting to IpAddress 13.69.111.62 (1 of 1) for HostName 'fb5c84825c32.tr18067.westeurope1-a.worker.database.windows.net' (1 of 1)
[TRACE] ServerSession Session1.2 connected to IpAddress 13.69.111.62 for HostName 'fb5c84825c32.tr18067.westeurope1-a.worker.database.windows.net' with local Port 56672
[TRACE] ServerSession Session1.2 server sent AuthPluginName=mysql_native_password
[DEBUG] ServerSession Session1.2 made connection; ServerVersion=5.6.47.0; ConnectionId=32767; Compression=False; Attributes=True; DeprecateEof=False; Ssl=True; SessionTrack=False; Pipelining=True; QueryAttributes=False
[TRACE] ServerSession Session1.2 initializing TLS connection
[DEBUG] ServerSession Session1.2 connected TLS with SslProtocol=Tls12, NegotiatedCipherSuite=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
[TRACE] ServerSession Session1.2 creating connection attributes
[TRACE] ServerSession Session1.2 switching to AuthenticationMethod 'mysql_native_password'
[DEBUG] ServerSession Session1.2 detected proxy; getting CONNECTION_ID(), VERSION() from server
[DEBUG] ServerSession Session1.2 changing ConnectionIdOld 32767 to ConnectionId 114977 and ServerVersionOld 5.6.47.0 to ServerVersion 8.0.15
[TRACE] ConnectionPool Pool1 closing Session1.1 to use redirected Session1.2 instead
[TRACE] ServerSession Session1.1 sending QUIT command
[DEBUG] ServerSession Session1.1 closing stream/socket
[TRACE] ConnectionPool Pool1 returning new Session1.2 to caller; LeasedSessionsCount=1
[TRACE] CommandExecutor Session1.2 ExecuteReader Asynchronous CommandCount: 1
[TRACE] SingleCommandPayloadCreator Session1.2 Preparing command payload; CommandText: SELECT SLEEP(5)
[DEBUG] ServerSession Session1.2 will cancel CommandId: 2 (CancelledAttempts=1) CommandText: SELECT SLEEP(5)
[DEBUG] MySqlConnection CommandId 2 for Session1.2 has been canceled via Cancel().
[TRACE] ServerSession Session0.1 created new session
[DEBUG] MySqlConnection Created new non-pooled Session0.1
[TRACE] ServerSession Session0.1 connecting to IpAddress 13.69.111.62 (1 of 1) for HostName '13.69.111.62' (1 of 1)
[INFO] ServerSession Session0.1 connect timeout expired connecting to IpAddress 13.69.111.62 for HostName '13.69.111.62'
[DEBUG] ServerSession Session0.1 closing stream/socket
[INFO] MySqlConnection Session1.2 cancelling CommandId 2 failed
MySqlConnector.MySqlException (0x80004005): Connect Timeout expired.
---> MySqlConnector.MySqlException (0x80004005): Connect Timeout expired.
at MySqlConnector.Core.ServerSession.OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ServerSession.cs:line 1129
at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, MySqlConnection connection, Int32 startTickCount, ILoadBalancer loadBalancer, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ServerSession.cs:line 438
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 942
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 948
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 959
at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 423
at MySqlConnector.MySqlConnection.Open() in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 382
at MySqlConnector.MySqlConnection.Cancel(ICancellableCommand command, Int32 commandId, Boolean isCancel) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 776
[DEBUG] ServerSession Session1.2 will cancel CommandId: 2 (CancelledAttempts=2) CommandText: SELECT SLEEP(5)
[DEBUG] MySqlConnection CommandId 2 for Session1.2 has been canceled via Cancel().
[TRACE] ServerSession Session0.2 created new session
[DEBUG] MySqlConnection Created new non-pooled Session0.2
[TRACE] ServerSession Session0.2 connecting to IpAddress 13.69.111.62 (1 of 1) for HostName '13.69.111.62' (1 of 1)
[INFO] ServerSession Session0.2 connect timeout expired connecting to IpAddress 13.69.111.62 for HostName '13.69.111.62'
[DEBUG] ServerSession Session0.2 closing stream/socket
[INFO] MySqlConnection Session1.2 cancelling CommandId 2 failed
MySqlConnector.MySqlException (0x80004005): Connect Timeout expired.
---> MySqlConnector.MySqlException (0x80004005): Connect Timeout expired.
at MySqlConnector.Core.ServerSession.OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ServerSession.cs:line 1129
at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, MySqlConnection connection, Int32 startTickCount, ILoadBalancer loadBalancer, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ServerSession.cs:line 438
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 942
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 948
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 959
at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 423
at MySqlConnector.MySqlConnection.Open() in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 382
at MySqlConnector.MySqlConnection.Cancel(ICancellableCommand command, Int32 commandId, Boolean isCancel) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 776
[DEBUG] ServerSession Session1.2 will cancel CommandId: 2 (CancelledAttempts=3) CommandText: SELECT SLEEP(5)
[DEBUG] MySqlConnection CommandId 2 for Session1.2 has been canceled via Cancel().
[TRACE] ServerSession Session0.3 created new session
[DEBUG] MySqlConnection Created new non-pooled Session0.3
[TRACE] ServerSession Session0.3 connecting to IpAddress 13.69.111.62 (1 of 1) for HostName '13.69.111.62' (1 of 1)
[INFO] ServerSession Session0.3 connect timeout expired connecting to IpAddress 13.69.111.62 for HostName '13.69.111.62'
[DEBUG] ServerSession Session0.3 closing stream/socket
[INFO] MySqlConnection Session1.2 cancelling CommandId 2 failed
MySqlConnector.MySqlException (0x80004005): Connect Timeout expired.
---> MySqlConnector.MySqlException (0x80004005): Connect Timeout expired.
at MySqlConnector.Core.ServerSession.OpenTcpSocketAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ServerSession.cs:line 1129
at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, MySqlConnection connection, Int32 startTickCount, ILoadBalancer loadBalancer, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ServerSession.cs:line 438
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 942
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 948
at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity activity, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 959
at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 423
at MySqlConnector.MySqlConnection.Open() in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 382
at MySqlConnector.MySqlConnection.Cancel(ICancellableCommand command, Int32 commandId, Boolean isCancel) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlConnection.cs:line 776
[TRACE] ServerSession Session1.2 entering FinishQuerying; SessionState=Querying
[TRACE] ServerSession Session1.2 returning to Pool1
[TRACE] ConnectionPool Pool1 receiving Session1.2 back
[INFO] ConnectionPool Pool1 clearing connection pool
[TRACE] ConnectionPool Pool1 recovered no sessions
[DEBUG] ConnectionPool Pool1 found Session1.2 to clean up
[TRACE] ServerSession Session1.2 sending QUIT command
[DEBUG] ServerSession Session1.2 closing stream/socket
Code sample
using MySqlConnector;
using MySqlConnector.Logging;
MySqlConnectorLogManager.Provider = new ConsoleLoggerProvider(MySqlConnectorLogLevel.Trace);
var cts = new CancellationTokenSource();
const string connectionString = "connection string with failing cancellation (for example, one with enabled ServerRedirectionMode)";
await using var connection = new MySqlConnection(connectionString);
await connection.OpenAsync();
await using var cmd = new MySqlCommand("SELECT SLEEP(5)", connection);
var task = cmd.ExecuteNonQueryAsync(cts.Token);
cts.Cancel();
await task;
Expected behavior
When I set CancellationTimeout to 2 seconds, I expect the cancellation to last for a maximum of 2 seconds instead of 10*2 seconds. I expect cancellation tobe respected, or at least being able to configure the retry count of 10.
Additional context
Here is the code responsible for the 10 retries: link.
Subsequent retries are executed because of RegisterCancel(). I have logged the stack trace via Log.Trace($"Executing RegisterCancel:\n{System.Environment.StackTrace}");, here is the stack trace from subsequent calls (first one is called from the test script as planned):
Stack Trace
[TRACE] MySqlCommand Executing RegisterCancel:
at System.Environment.get_StackTrace()
at MySqlConnector.MySqlCommand.MySqlConnector.Core.ICancellableCommand.RegisterCancel(CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlCommand.cs:line 396
at MySqlConnector.Core.ResultSet.ScanRowAsync(IOBehavior ioBehavior, Row row, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ResultSet.cs:line 233
at MySqlConnector.Core.ResultSet.ReadAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ResultSet.cs:line 199
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at MySqlConnector.Core.ResultSet.ReadAsync(IOBehavior ioBehavior, CancellationToken cancellationToken)
at MySqlConnector.MySqlCommand.ExecuteNonQueryAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlCommand.cs:line 301
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(IReadOnlyList`1 commands, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/CommandExecutor.cs:line 77
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at MySqlConnector.MySqlDataReader.CreateAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary`2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/MySqlDataReader.cs:line 493
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(Task`1 task, TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult()
at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ResultSet.cs:line 175
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(Task`1 task, TResult result)
at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(TResult result)
at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Core/ServerSession.cs:line 964
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(Task`1 task, TResult result)
at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(TResult result)
at MySqlConnector.Protocol.Serialization.ProtocolUtility.<DoReadPayloadAsync>g__AddContinuation|5_0(ValueTask`1 readPacketTask, BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ArraySegmentHolder`1 previousPayloads, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Protocol/Serialization/ProtocolUtility.cs:line 498
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(Task`1 task, TResult result)
at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(TResult result)
at MySqlConnector.Protocol.Serialization.ProtocolUtility.<ReadPacketAsync>g__AddContinuation|1_0(ValueTask`1 headerBytes, BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Protocol/Serialization/ProtocolUtility.cs:line 423
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at MySqlConnector.Protocol.Serialization.BufferedByteReader.ReadBytesAsync(IByteHandler byteHandler, ArraySegment`1 buffer, Int32 totalBytesToRead, IOBehavior ioBehavior) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Protocol/Serialization/BufferedByteReader.cs:line 53
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(Task`1 task, TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(TResult result)
at MySqlConnector.Protocol.Serialization.StreamByteHandler.<ReadBytesAsync>g__DoReadBytesAsync|6_2(Memory`1 buffer) in /Users/stilettk/RiderProjects/MySqlConnector-dodo/src/MySqlConnector/Protocol/Serialization/StreamByteHandler.cs:line 85
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(Task`1 task, TResult result)
at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(TResult result)
at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory`1 buffer)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
at System.Threading.Tasks.Task.FinishContinuations()
at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(Task`1 task, TResult result)
at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(TResult result)
at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](TIOAdapter adapter)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
at System.Threading.ThreadPool.<>c.<.cctor>b__86_0(Object state)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.InvokeContinuation(Action`1 continuation, Object state, Boolean forceAsync, Boolean requiresExecutionContextFlow)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs _)
at System.Net.Sockets.SocketAsyncEventArgs.OnCompletedInternal()
at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationAsyncSuccess(Int32 bytesTransferred, SocketFlags flags)
at System.Net.Sockets.SocketAsyncEventArgs.CompletionCallback(Int32 bytesTransferred, SocketFlags flags, SocketError socketError)
at System.Net.Sockets.SocketAsyncEventArgs.TransferCompletionCallbackCore(Int32 bytesTransferred, Byte[] socketAddress, Int32 socketAddressSize, SocketFlags receivedFlags, SocketError socketError)
at System.Net.Sockets.SocketAsyncContext.OperationQueue`1.ProcessAsyncOperation(TOperation op)
at System.Net.Sockets.SocketAsyncContext.ReadOperation.System.Threading.IThreadPoolWorkItem.Execute()
at System.Net.Sockets.SocketAsyncContext.HandleEvents(SocketEvents events)
at System.Net.Sockets.SocketAsyncEngine.System.Threading.IThreadPoolWorkItem.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()