@@ -142,17 +142,18 @@ public async ValueTask<ServerSession> GetSessionAsync(MySqlConnection connection
142
142
}
143
143
}
144
144
145
- private bool SessionIsHealthy ( ServerSession session )
145
+ // Returns zero for healthy, non-zero otherwise.
146
+ private int GetSessionHealth ( ServerSession session )
146
147
{
147
148
if ( ! session . IsConnected )
148
- return false ;
149
+ return 1 ;
149
150
if ( session . PoolGeneration != m_generation )
150
- return false ;
151
+ return 2 ;
151
152
if ( ConnectionSettings . ConnectionLifeTime > 0
152
153
&& unchecked ( ( uint ) Environment . TickCount ) - session . CreatedTicks >= ConnectionSettings . ConnectionLifeTime )
153
- return false ;
154
+ return 3 ;
154
155
155
- return true ;
156
+ return 0 ;
156
157
}
157
158
158
159
public void Return ( ServerSession session )
@@ -165,14 +166,18 @@ public void Return(ServerSession session)
165
166
lock ( m_leasedSessions )
166
167
m_leasedSessions . Remove ( session . Id ) ;
167
168
session . OwningConnection = null ;
168
- if ( SessionIsHealthy ( session ) )
169
+ var sessionHealth = GetSessionHealth ( session ) ;
170
+ if ( sessionHealth == 0 )
169
171
{
170
172
lock ( m_sessions )
171
173
m_sessions . AddFirst ( session ) ;
172
174
}
173
175
else
174
176
{
175
- Log . Warn ( "Pool{0} received invalid Session{1}; destroying it" , m_logArguments [ 0 ] , session . Id ) ;
177
+ if ( sessionHealth == 1 )
178
+ Log . Warn ( "Pool{0} received invalid Session{1}; destroying it" , m_logArguments [ 0 ] , session . Id ) ;
179
+ else
180
+ Log . Info ( "Pool{0} received expired Session{1}; destroying it" , m_logArguments [ 0 ] , session . Id ) ;
176
181
AdjustHostConnectionCount ( session , - 1 ) ;
177
182
session . DisposeAsync ( IOBehavior . Synchronous , CancellationToken . None ) . GetAwaiter ( ) . GetResult ( ) ;
178
183
}
0 commit comments