-
Notifications
You must be signed in to change notification settings - Fork 647
overlord: document task lanes in README #16331
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
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 adds documentation for task lanes in the overlord's README, explaining how lanes enable independent failure domains within a Change.
Key Changes:
- Documents the default behavior where any task failure aborts the entire change
- Explains how lanes allow partial failure by grouping tasks into independent domains
- Describes lane assignment using
JoinLane()andNewLane(), and the special lane 0 for unassigned tasks
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| To assign a `Task` to a lane, use `Task.JoinLane()` where the lane number is obtained from `State.NewLane()`. A `Task` can be in multiple lanes by calling `JoinLane` multiple times. `Task`s not explicitly assigned to any lane are considered to be in lane 0. | ||
|
|
||
| When a `Task` in a lane fails, `Change.AbortLanes` aborts all `Task`s exclusively in that lane and any `Task`s waiting on them. However, `Task`s that belong to multiple lanes survive if at least one of their other lanes is healthy i.e., all of the lane's `Task`s are in Do, Doing, or Done status. |
Copilot
AI
Dec 2, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The phrase 'i.e.' should be preceded by a comma for proper punctuation.
| When a `Task` in a lane fails, `Change.AbortLanes` aborts all `Task`s exclusively in that lane and any `Task`s waiting on them. However, `Task`s that belong to multiple lanes survive if at least one of their other lanes is healthy i.e., all of the lane's `Task`s are in Do, Doing, or Done status. | |
| When a `Task` in a lane fails, `Change.AbortLanes` aborts all `Task`s exclusively in that lane and any `Task`s waiting on them. However, `Task`s that belong to multiple lanes survive if at least one of their other lanes is healthy, i.e., all of the lane's `Task`s are in Do, Doing, or Done status. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #16331 +/- ##
==========================================
+ Coverage 77.47% 77.52% +0.05%
==========================================
Files 1332 1327 -5
Lines 182307 182264 -43
Branches 2437 2437
==========================================
+ Hits 141234 141309 +75
+ Misses 32502 32385 -117
+ Partials 8571 8570 -1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Wed Dec 3 18:47:35 UTC 2025 Failures:Preparing:
Executing:
Restoring:
|
While working on the device management manager (wonder how much it'll cost to name that manager 😄), I encountered a situation where I needed to use task lanes but they weren't documented in our trusty
README.md. This PR does just that: documents task lanes. If something's off, please let me know.Task lanes example from the `deviceMgmtMgr`
Example: Message Processing Without Lanes
When message C7NFJDFXZGR7XBOF fails, message JMAI5MYPI2GDUD7V's
queue-responsetask is held:Example: Message Processing With Lanes
Message HAWD4UTZVVRF4WKX completes and queues its response while message MYK2FJKMVWTBEC76 fails independently: