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);
}
}
}