private void DetectFailures()

in code/KustoCopyConsole/Runner/AwaitExportedRunner.cs [122:152]


        private void DetectFailures(
            IImmutableDictionary<string, BlockRowItem> operationIdMap,
            IImmutableList<ExportOperationStatus> statuses)
        {
            var failedStatuses = statuses
                .Where(s => FAILED_STATUS.Contains(s.State));

            foreach (var status in failedStatuses)
            {
                var block = operationIdMap[status.OperationId];
                var message = status.ShouldRetry
                    ? "block marked for reprocessing"
                    : "block can't be re-exported";
                var warning = $"Warning!  Operation ID in state '{status.State}', " +
                    $"status '{status.Status}' " +
                    $"block {block.BlockId} (Iteration={block.IterationId}, " +
                    $"Activity='{block.ActivityName}') ; {message}";

                TraceWarning(warning);
                if (status.ShouldRetry)
                {
                    block.ExportOperationId = string.Empty;
                    block = block.ChangeState(BlockState.Planned);
                    RowItemGateway.Append(block);
                }
                else
                {
                    throw new CopyException($"Permanent export error", false);
                }
            }
        }