Skip to content

fix: report why failfast cancelled a parallel task - #2954

Open
20ns wants to merge 1 commit into
go-task:mainfrom
20ns:fix/report-parallel-task-cancellation-reason
Open

fix: report why failfast cancelled a parallel task#2954
20ns wants to merge 1 commit into
go-task:mainfrom
20ns:fix/report-parallel-task-cancellation-reason

Conversation

@20ns

@20ns 20ns commented Aug 3, 2026

Copy link
Copy Markdown

Fixes #1226

When failfast cancels a sibling task running in parallel, the cancellation was silent. This now reports which task caused the cancellation for both parallel calls and dependencies.

Added regression coverage for both paths and updated the expected failfast output.

Verified with go test . -run 'TestParallelFailfastCancellationReason|TestFailfast' and a local --parallel --failfast run.

Assisted with Cursor; I reviewed and tested the change.

When failfast stops sibling tasks, log which peer failed so the
cancellation is visible instead of looking like a silent drop.
@vmaerten vmaerten self-assigned this Aug 4, 2026
@vmaerten
vmaerten requested review from vmaerten and a lite review from Copilot August 4, 2026 15:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves failfast observability by emitting an explicit termination message when a parallel sibling task is cancelled due to another task error, covering both top-level parallel calls and parallelized dependencies.

Changes:

  • Add cancellation-reason reporting for failfast-driven cancellations in parallel task execution and dependency execution.
  • Add regression tests and golden fixtures for both CLI-parallel and dependency-parallel scenarios.
  • Update changelog to document the new cancellation messaging behavior.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
task.go Logs a clear termination message for tasks cancelled by failfast in parallel execution paths.
executor_test.go Adds regression coverage validating the new termination message for both parallel calls and deps.
testdata/parallel_failfast_cancel/Taskfile.yaml New fixture Taskfile to reproduce parallel failfast cancellation in tests.
testdata/parallel_failfast_cancel/testdata/TestParallelFailfastCancellationReason-Deps-default.golden Golden output for the deps cancellation message.
testdata/parallel_failfast_cancel/testdata/TestParallelFailfastCancellationReason-Deps-default-err-run.golden Golden output for the expected error path in deps scenario.
testdata/failfast/default/testdata/TestFailfast-Option-default.golden Updates expected failfast output to include termination messages.
testdata/failfast/task/testdata/TestFailfast-Task-task.golden Updates expected failfast output to include termination messages.
CHANGELOG.md Documents the new cancellation reason reporting for failfast parallel tasks.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread task.go

var causeRunErr *errors.TaskRunError
if !errors.As(cause, &causeRunErr) {
e.Logger.Errf(logger.Red, "task: Terminated %q because a parallel running task failed.\n", taskName)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Report reason for cancellation of parallel task

3 participants