From 236e96a79350258e45dbbcd16d6407bd8800ac5b Mon Sep 17 00:00:00 2001 From: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com> Date: Fri, 31 May 2024 09:30:18 -0700 Subject: [PATCH 1/2] fix: Adjust big segments logic to prevent duplicate polls. --- .../BigSegments/BigSegmentStoreWrapper.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs index d2ba1828..192963c7 100644 --- a/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs +++ b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs @@ -22,8 +22,10 @@ internal class BigSegmentStoreWrapper : IDisposable private readonly CancellationTokenSource _pollCanceller; private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(); private readonly Logger _logger; + private readonly Task _initialPoll; private BigSegmentStoreStatus? _lastStatus; + private int count = 0; internal event EventHandler StatusChanged; @@ -43,8 +45,9 @@ Logger logger _taskExecutor = taskExecutor; _logger = logger; + _initialPoll = Task.Run(PollStoreAndUpdateStatusAsync); _pollCanceller = taskExecutor.StartRepeatingTask( - TimeSpan.Zero, + config.StatusPollInterval, config.StatusPollInterval, PollStoreAndUpdateStatusAsync ); @@ -119,15 +122,16 @@ internal BigSegmentStoreStatus GetStatus() { _lock.ExitReadLock(); } - if (ret.HasValue) - { - return ret.Value; - } - return AsyncUtils.WaitSafely(() => PollStoreAndUpdateStatusAsync()); + return ret ?? _initialPoll.GetAwaiter().GetResult(); } private async Task PollStoreAndUpdateStatusAsync() { + count++; + if (count == 2) + { + Console.WriteLine("POTATO"); + } var newStatus = new BigSegmentStoreStatus(); _logger.Debug("Querying Big Segment store metadata"); try From d9d83c11235870d9cef54ed99587fd76f57863b9 Mon Sep 17 00:00:00 2001 From: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com> Date: Fri, 31 May 2024 09:31:30 -0700 Subject: [PATCH 2/2] Remove debug code. --- .../src/Internal/BigSegments/BigSegmentStoreWrapper.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs index 192963c7..6cca870c 100644 --- a/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs +++ b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs @@ -25,7 +25,6 @@ internal class BigSegmentStoreWrapper : IDisposable private readonly Task _initialPoll; private BigSegmentStoreStatus? _lastStatus; - private int count = 0; internal event EventHandler StatusChanged; @@ -127,11 +126,6 @@ internal BigSegmentStoreStatus GetStatus() private async Task PollStoreAndUpdateStatusAsync() { - count++; - if (count == 2) - { - Console.WriteLine("POTATO"); - } var newStatus = new BigSegmentStoreStatus(); _logger.Debug("Querying Big Segment store metadata"); try