fix: report why failfast cancelled a parallel task - #2954
Open
20ns wants to merge 1 commit into
Open
Conversation
When failfast stops sibling tasks, log which peer failed so the cancellation is visible instead of looking like a silent drop.
There was a problem hiding this comment.
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.
|
|
||
| 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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1226
When
failfastcancels 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 --failfastrun.Assisted with Cursor; I reviewed and tested the change.