markFailed method
Marks taskId as failed with error.
If retryable is true and retry count < 2, resets to pending for retry.
Implementation
void markFailed(
ExecutionDAG dag,
String taskId,
String error, {
bool retryable = true,
}) {
final task = dag[taskId];
if (task == null) return;
task.retryCount++;
task.finishedAt = DateTime.now();
if (retryable && task.retryCount < 2) {
task.status = TaskStatus.pending;
_logger.warning(
'Task failed (retry ${task.retryCount}/2): '
'"${_trunc(task.description)}" — $error');
} else {
task.status = TaskStatus.failed;
task.result = TaskResult(
taskId: taskId,
success: false,
error: error,
completedAt: DateTime.now(),
);
_logger.error('Task permanently failed: "${_trunc(task.description)}" — $error');
}
}