diff --git a/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs index d2ba1828..6cca870c 100644 --- a/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs +++ b/pkgs/sdk/server/src/Internal/BigSegments/BigSegmentStoreWrapper.cs @@ -22,6 +22,7 @@ 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; @@ -43,8 +44,9 @@ Logger logger _taskExecutor = taskExecutor; _logger = logger; + _initialPoll = Task.Run(PollStoreAndUpdateStatusAsync); _pollCanceller = taskExecutor.StartRepeatingTask( - TimeSpan.Zero, + config.StatusPollInterval, config.StatusPollInterval, PollStoreAndUpdateStatusAsync ); @@ -119,11 +121,7 @@ internal BigSegmentStoreStatus GetStatus() { _lock.ExitReadLock(); } - if (ret.HasValue) - { - return ret.Value; - } - return AsyncUtils.WaitSafely(() => PollStoreAndUpdateStatusAsync()); + return ret ?? _initialPoll.GetAwaiter().GetResult(); } private async Task PollStoreAndUpdateStatusAsync()