MySqlConnector
MySqlConnector copied to clipboard
ServerSession is not connected, this happens when I do a high-concurrency sql query
trafficstars
This is my codes:
public static MySqlConnection GetMySqlConnection(string connectionString, bool open = false, bool convertZeroDatetime = false, bool allowZeroDatetime = false)
{
var csb = new MySqlConnectionStringBuilder(connectionString)
{
AllowZeroDateTime = allowZeroDatetime,
ConvertZeroDateTime = convertZeroDatetime
};
var conn = new MySqlConnection(csb.ConnectionString);
if (open) conn.Open();
return conn;
}
using (var conn = GetMySqlConnection(connStr, true, false, false))
{
try
{
var sql = "SELECT * FROM TABLENAME";
var info = conn.Query<KlineResponseModel>(sql);
if (info.Count() > 0)
{
result = info.ToList();
}
}
catch (Exception ex)
{
throw ex;
}
conn.Close();
conn.Dispose();
}
When I use multithreading to call the second piece of code, the program will throw "ServerSession is not connected" after a period of execution.
What is the full call stack in the exception?
What is the full call stack in the exception?
at MySqlConnector.Core.ServerSession.VerifyConnected() in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 665
at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 610
--- End of stack trace from previous location where exception was thrown ---
at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task`1 task) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 1154
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
at MySqlConnector.Core.ResultSet.<ScanRowAsync>g__ScanRowAsyncAwaited|9_0(Task`1 payloadTask, Row row_, CancellationToken token) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ResultSet.cs:line 223
at MySqlConnector.Core.ResultSet.ReadAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ResultSet.cs:line 181
at MySqlConnector.Core.ResultSet.ReadEntireAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ResultSet.cs:line 167
at MySql.Data.MySqlClient.MySqlDataReader.NextResultAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 56
at MySql.Data.MySqlClient.MySqlDataReader.DoClose() in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 430
at MySql.Data.MySqlClient.MySqlDataReader.Dispose(Boolean disposing) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 294
at System.Data.Common.DbDataReader.Dispose()
at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition command, Type effectiveType)+<>m__Finally1() in C:\projects\dapper\Dapper\SqlMapper.cs:line 1129
at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition command, Type effectiveType)+System.IDisposable.Dispose()
at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition command, Type effectiveType)+MoveNext() in C:\projects\dapper\Dapper\SqlMapper.cs:line 1132
at System.Collections.Generic.List`1.AddEnumerable(IEnumerable`1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in C:\projects\dapper\Dapper\SqlMapper.cs:line 723
at NewRTService.Helper.MySQLHelper.GetKlineDataBySymbol(String connStr, String tableName, String exchangeTradeCoinId) in D:\Code\Company\GitLab\QuantLab.BitCoin\QuantLab.BitCoin.NewRTService\QuantLab.BitCoin.NewRTService\NewRTService\Helper\MySQLHelper.cs:line 252
line 252 is "var info = conn.Query<KlineResponseModel>(sql);"
@Zhu-Zi Did you ever figure this out? If so, how?
Closing error reported on a very old version of the library without a consistent repro.