markFailed method

void markFailed(
  1. ExecutionDAG dag,
  2. String taskId,
  3. String error, {
  4. bool retryable = true,
})

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