From 6f1104231fca82718bc11a15ff4b579b75a85766 Mon Sep 17 00:00:00 2001 From: Wraith2 Date: Sun, 10 Apr 2022 22:42:39 +0100 Subject: [PATCH] fix forced on sni log entries --- .../Data/SqlClient/SqlClientEventSource.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientEventSource.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientEventSource.cs index 8dea35170f..3690975f73 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientEventSource.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientEventSource.cs @@ -984,9 +984,9 @@ internal long TrySNIScopeEnterEvent(string className, [System.Runtime.CompilerSe { if (Log.IsSNIScopeEnabled()) { - StringBuilder sb = new StringBuilder(className); - sb.Append(".").Append(memberName).Append(" | SNI | INFO | SCOPE | Entering Scope {0}"); - return SNIScopeEnter(sb.ToString()); + long scopeId = Interlocked.Increment(ref s_nextSNIScopeId); + WriteEvent(SNIScopeEnterId, $"{className}.{memberName} | SNI | INFO | SCOPE | Entering Scope {scopeId}"); + return scopeId; } return 0; } @@ -1017,7 +1017,6 @@ internal void BeginExecute(int objectId, string dataSource, string database, str [Event(EndExecuteEventId, Keywords = Keywords.ExecutionTrace, Task = Tasks.ExecuteCommand, Opcode = EventOpcode.Stop)] internal void EndExecute(int objectId, int compositestate, int sqlExceptionNumber, string message) { - WriteEvent(EndExecuteEventId, objectId, compositestate, sqlExceptionNumber, message); } @@ -1130,10 +1129,17 @@ internal static class EventType private readonly long _scopeId; public TrySNIEventScope(long scopeID) => _scopeId = scopeID; - public void Dispose() => - SqlClientEventSource.Log.SNIScopeLeave(string.Format("Exit SNI Scope {0}", _scopeId)); + public void Dispose() + { + if (_scopeId == 0) + { + return; + } + SqlClientEventSource.Log.TrySNIScopeLeaveEvent(_scopeId); + } - public static TrySNIEventScope Create(string message) => new TrySNIEventScope(SqlClientEventSource.Log.SNIScopeEnter(message)); + public static TrySNIEventScope Create(string className, [System.Runtime.CompilerServices.CallerMemberName] string memberName = "") + => new TrySNIEventScope(SqlClientEventSource.Log.TrySNIScopeEnterEvent(className, memberName)); } internal readonly ref struct TryEventScope //: IDisposable