Esempio n. 1
0
        private async Task CleanupSoftDeletedStacksAsync(JobContext context)
        {
            var stackResults = await _stackRepository.GetAllAsync(q => q.SoftDeleteMode(SoftDeleteQueryMode.DeletedOnly).SnapshotPaging().PageLimit(100)).AnyContext();

            _logger.LogInformation("Cleaning up {StackTotal} soft deleted stack(s)", stackResults.Total);

            while (stackResults.Documents.Count > 0 && !context.CancellationToken.IsCancellationRequested)
            {
                foreach (var stack in stackResults.Documents)
                {
                    using (_logger.BeginScope(new ExceptionlessState().Organization(stack.OrganizationId).Project(stack.ProjectId))) {
                        await RemoveStackAsync(stack, context).AnyContext();

                        // Sleep so we are not hammering the backend.
                        await SystemClock.SleepAsync(TimeSpan.FromSeconds(5)).AnyContext();
                    }
                }

                if (context.CancellationToken.IsCancellationRequested || !await stackResults.NextPageAsync().AnyContext())
                {
                    break;
                }
            }
        }