protected override async Task <JobResult> RunInternalAsync(JobContext context) { const int LIMIT = 100; _lastRun = SystemClock.UtcNow; _logger.LogTrace("Start save stack event counts."); // Get list of stacks where snooze has expired var results = await _stackRepository.GetExpiredSnoozedStatuses(SystemClock.UtcNow, o => o.PageLimit(LIMIT)).AnyContext(); while (results.Documents.Count > 0 && !context.CancellationToken.IsCancellationRequested) { foreach (var stack in results.Documents) { stack.MarkOpen(); } await _stackRepository.SaveAsync(results.Documents).AnyContext(); // Sleep so we are not hammering the backend. await SystemClock.SleepAsync(TimeSpan.FromSeconds(2.5)).AnyContext(); if (context.CancellationToken.IsCancellationRequested || !await results.NextPageAsync().AnyContext()) { break; } if (results.Documents.Count > 0) { await context.RenewLockAsync().AnyContext(); } } _logger.LogTrace("Finished save stack event counts."); return(JobResult.Success); }