From c87b369426bf093c225cae2218df88ba8c6b2e30 Mon Sep 17 00:00:00 2001 From: Madeline MacDonald Date: Thu, 24 May 2018 18:00:12 -0700 Subject: [PATCH] Changing polling on startup to avoid profiler freezing (#620) --- .../Profiler/ProfilerSession.cs | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.SqlTools.ServiceLayer/Profiler/ProfilerSession.cs b/src/Microsoft.SqlTools.ServiceLayer/Profiler/ProfilerSession.cs index f15ed0ea..297563e8 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Profiler/ProfilerSession.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Profiler/ProfilerSession.cs @@ -126,7 +126,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Profiler } /// - /// Filter the event list to not include previously seen events + /// Filter the event list to not include previously seen events, + /// and to exclude events that happened before the profiling session began. /// public List FilterOldEvents(List events) { @@ -149,12 +150,23 @@ namespace Microsoft.SqlTools.ServiceLayer.Profiler { events.RemoveRange(0, idx + 1); } - } - // save the last event so we know where to clean-up the list from next time - if (events.Count > 0) + // save the last event so we know where to clean-up the list from next time + if (events.Count > 0) + { + lastSeenEvent = events.LastOrDefault(); + } + } + else // first poll at start of session, all data is old { - lastSeenEvent = events.LastOrDefault(); + // save the last event as the beginning of the profiling session + if (events.Count > 0) + { + lastSeenEvent = events.LastOrDefault(); + } + + // ignore all events before the session began + events.Clear(); } return events;