Skip to content

Commit 5a78328

Browse files
committed
Add logging for cached procedures.
Signed-off-by: Bradley Grainger <[email protected]>
1 parent e4641f6 commit 5a78328

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/MySqlConnector/Core/CachedProcedure.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Threading;
77
using System.Threading.Tasks;
88
using MySql.Data.MySqlClient;
9+
using MySqlConnector.Logging;
910
using MySqlConnector.Protocol.Serialization;
1011

1112
namespace MySqlConnector.Core
@@ -48,6 +49,8 @@ FROM information_schema.parameters
4849
}
4950
}
5051

52+
if (Log.IsInfoEnabled())
53+
Log.Info("Procedure for Schema={0} Component={1} has RoutineCount={2}, ParameterCount={3}", schema, component, routineCount, parameters.Count);
5154
return routineCount == 0 ? null : new CachedProcedure(schema, component, parameters.AsReadOnly());
5255
}
5356

@@ -90,7 +93,9 @@ internal MySqlParameterCollection AlignParamsWithDb(MySqlParameterCollection par
9093
return alignedParams;
9194
}
9295

93-
private string FullyQualified => $"`{m_schema}`.`{m_component}`";
96+
string FullyQualified => $"`{m_schema}`.`{m_component}`";
97+
98+
static readonly IMySqlConnectorLogger Log = MySqlConnectorLogManager.CreateLogger(nameof(CachedProcedure));
9499

95100
readonly string m_schema;
96101
readonly string m_component;

src/MySqlConnector/MySql.Data.MySqlClient/MySqlConnection.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,19 +322,30 @@ internal void Cancel(MySqlCommand command)
322322

323323
internal async Task<CachedProcedure> GetCachedProcedure(IOBehavior ioBehavior, string name, CancellationToken cancellationToken)
324324
{
325+
if (Log.IsDebugEnabled())
326+
Log.Debug("Session{0} getting cached procedure Name={1}", m_session.Id, name);
325327
if (State != ConnectionState.Open)
326328
throw new InvalidOperationException("Connection is not open.");
327329

328330
if (m_session.ServerVersion.Version < ServerVersions.SupportsProcedureCache)
331+
{
332+
Log.Warn("Session{0} ServerVersion={1} does not support cached procedures", m_session.Id, m_session.ServerVersion.OriginalString);
329333
return null;
334+
}
330335

331336
var cachedProcedures = m_session.Pool?.GetProcedureCache() ?? m_cachedProcedures;
332337
if (cachedProcedures == null)
338+
{
339+
Log.Warn("Session{0} pool Pool{1} doesn't have a shared procedure cache; procedure will only be cached on this connection", m_session.Id, m_session.Pool?.Id);
333340
cachedProcedures = m_cachedProcedures = new Dictionary<string, CachedProcedure>();
341+
}
334342

335343
var normalized = NormalizedSchema.MustNormalize(name, Database);
336344
if (string.IsNullOrEmpty(normalized.Schema))
345+
{
346+
Log.Warn("Session{0} couldn't normalize Database={1} Name={2}; not caching procedure", m_session.Id, Database, name);
337347
return null;
348+
}
338349

339350
CachedProcedure cachedProcedure;
340351
bool foundProcedure;
@@ -343,9 +354,24 @@ internal async Task<CachedProcedure> GetCachedProcedure(IOBehavior ioBehavior, s
343354
if (!foundProcedure)
344355
{
345356
cachedProcedure = await CachedProcedure.FillAsync(ioBehavior, this, normalized.Schema, normalized.Component, cancellationToken).ConfigureAwait(false);
357+
if (Log.IsWarnEnabled())
358+
{
359+
if (cachedProcedure != null)
360+
Log.Info("Session{0} caching procedure Schema={1} Component={2}", m_session.Id, normalized.Schema, normalized.Component);
361+
else
362+
Log.Warn("Session{0} failed to cache procedure Schema={1} Component={2}", m_session.Id, normalized.Schema, normalized.Component);
363+
}
346364
lock (cachedProcedures)
347365
cachedProcedures[normalized.FullyQualified] = cachedProcedure;
348366
}
367+
368+
if (Log.IsWarnEnabled())
369+
{
370+
if (cachedProcedure == null)
371+
Log.Warn("Session{0} did not find cached procedure Schema={1} Component={2}", m_session.Id, normalized.Schema, normalized.Component);
372+
else
373+
Log.Debug("Session{0} returning cached procedure Schema={1} Component={2}", m_session.Id, normalized.Schema, normalized.Component);
374+
}
349375
return cachedProcedure;
350376
}
351377

0 commit comments

Comments
 (0)