Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit bb620b7

Browse files
Ensure ResetConnectionAsync throws MySqlException. Fixes #1602
1 parent ae029d5 commit bb620b7

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

‎src/MySqlConnector/Logging/EventIds.cs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ internal static class EventIds
2525
public const int ExpectedToReadMoreBytes = 2010;
2626
public const int ExpectedSessionState1 = 2011;
2727
public const int ExpectedSessionState6 = 2016;
28+
public const int ResettingConnectionFailed = 2017;
29+
public const int ResetConnection = 2018;
2830

2931
// Session connecting events, 2100-2199
3032
public const int ConnectingFailed = 2100;

‎src/MySqlConnector/Logging/Log.cs‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ internal static partial class Log
2828
[LoggerMessage(EventIds.ResettingConnection, LogLevel.Debug, "Session {SessionId} resetting connection")]
2929
public static partial void ResettingConnection(ILogger logger, string sessionId);
3030

31+
[LoggerMessage(EventIds.ResettingConnectionFailed, LogLevel.Warning, "Session {SessionId} failed to reset connection: {Message}")]
32+
public static partial void ResettingConnectionFailed(ILogger logger, string sessionId, string message);
33+
34+
[LoggerMessage(EventIds.ResetConnection, LogLevel.Debug, "Session {SessionId} reset connection")]
35+
public static partial void ResetConnection(ILogger logger, string sessionId);
36+
3137
[LoggerMessage(EventIds.ReturningToPool, LogLevel.Trace, "Session {SessionId} returning to pool {PoolId}")]
3238
public static partial void ReturningToPool(ILogger logger, string sessionId, int poolId);
3339

‎src/MySqlConnector/MySqlConnection.cs‎

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -613,9 +613,21 @@ public async ValueTask ResetConnectionAsync(CancellationToken cancellationToken
613613
{
614614
var session = Session;
615615
Log.ResettingConnection(m_logger, session.Id);
616-
await session.SendAsync(ResetConnectionPayload.Instance, AsyncIOBehavior, cancellationToken).ConfigureAwait(false);
617-
var payload = await session.ReceiveReplyAsync(AsyncIOBehavior, cancellationToken).ConfigureAwait(false);
618-
OkPayload.Verify(payload.Span, session);
616+
try
617+
{
618+
await session.SendAsync(ResetConnectionPayload.Instance, AsyncIOBehavior, cancellationToken).ConfigureAwait(false);
619+
var payload = await session.ReceiveReplyAsync(AsyncIOBehavior, cancellationToken).ConfigureAwait(false);
620+
OkPayload.Verify(payload.Span, session);
621+
Log.ResetConnection(m_logger, session.Id);
622+
}
623+
catch (Exception ex)
624+
{
625+
Log.ResettingConnectionFailed(m_logger, session.Id, ex.Message);
626+
if (ex is MySqlException)
627+
throw;
628+
else
629+
throw new MySqlException("Failed to reset connection", ex);
630+
}
619631
}
620632

621633
[AllowNull]

‎tests/MySqlConnector.Tests/ConnectionTests.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ public async Task ResetServerConnectionWhileOpen()
321321
}
322322
case 2:
323323
{
324-
await Assert.ThrowsAnyAsync<Exception>(async () => await connection.ResetConnectionAsync().ConfigureAwait(false));
324+
await Assert.ThrowsAsync<MySqlException>(async () => await connection.ResetConnectionAsync().ConfigureAwait(false));
325325
break;
326326
}
327327
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /