From 474928e7cffff69ec82edad1a41f761724ad2f2b Mon Sep 17 00:00:00 2001 From: Edward Neal <55035479+edwardneal@users.noreply.github.com> Date: Tue, 23 Sep 2025 17:12:08 +0100 Subject: [PATCH] Prevent uninitialised performance counters escaping CreatePerformanceCounter (#3623) --- .../Data/SqlClient/Diagnostics/SqlClientMetrics.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Diagnostics/SqlClientMetrics.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Diagnostics/SqlClientMetrics.cs index f62c65b122..9319087a75 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Diagnostics/SqlClientMetrics.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Diagnostics/SqlClientMetrics.cs @@ -489,25 +489,25 @@ private void RemovePerformanceCounters() private PerformanceCounter? CreatePerformanceCounter(string counterName, PerformanceCounterType counterType) { - PerformanceCounter? instance = null; - _instanceName ??= GetInstanceName(); try { - instance = new PerformanceCounter(); + PerformanceCounter instance = new(); instance.CategoryName = PerformanceCounterCategoryName; instance.CounterName = counterName; instance.InstanceName = _instanceName; instance.InstanceLifetime = PerformanceCounterInstanceLifetime.Process; instance.ReadOnly = false; instance.RawValue = 0; // make sure we start out at zero + + return instance; } catch (InvalidOperationException e) { ADP.TraceExceptionWithoutRethrow(e); - } - return instance; + return null; + } } // SxS: this method uses GetCurrentProcessId to construct the instance name.