Repository navigation
Java SDK: Group a native Dag's tasks with task groups - #74230
Merged
Merged
Conversation
This was referenced Oct 5, 2026
jason810496
force-pushed
the
feature/java-sdk-task-group
branch
3 times, most recently
from
October 6, 2026 03:04
ed72edc to
81e6d36
Compare
jason810496
marked this pull request as ready for review
October 6, 2026 03:19
jason810496
force-pushed
the
feature/java-sdk-task-group
branch
from
October 6, 2026 06:01
81e6d36 to
9412192
Compare
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
uranusjr
reviewed
Oct 7, 2026
jason810496
marked this pull request as draft
October 7, 2026 07:24
jason810496
force-pushed
the
feature/java-sdk-task-group
branch
from
October 7, 2026 07:40
9412192 to
50b0618
Compare
jason810496
force-pushed
the
feature/java-sdk-task-group
branch
from
October 7, 2026 07:44
50b0618 to
a22621f
Compare
jason810496
marked this pull request as ready for review
October 7, 2026 08:30
jason810496
commented
Oct 7, 2026
jason810496
left a comment
Member
Author
There was a problem hiding this comment.
Thanks for the review.
kaxil
reviewed
Oct 7, 2026
henry3260
approved these changes
Oct 7, 2026
henry3260
left a comment
Contributor
There was a problem hiding this comment.
Just want to help unblock the technical side here, not a formal review.
The reserved names of a group's wiring view are now read from Deps.TaskGroup, so endpoints, before and after are rejected as task method names inside a group, not only groupId and nodes. A task named before would otherwise win overload resolution over the inherited before(Flow...) and silently register a task. Add tests for that clash, for duplicate group IDs in one scope, and for the order group edges resolve in: an empty group prefers an earlier edge over its parent, and edges resolve in the order they were drawn. Correct the Task groups docs and TaskGroupRef KDoc: only what a group holds is read once, while edges still resolve in drawing order. Restore the missing transform, load and audit calls in the group wiring example so it parses.
jason810496
commented
Oct 7, 2026
jason810496
left a comment
Member
Author
There was a problem hiding this comment.
Thanks for the review.
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.
Example
With annotations, a
@Builder.TaskGroupclass holds the tasks of one group, and nesting one inanother nests the groups:
The generated view nests the same way, so a group is both the namespace of what it holds and a point
in the flow:
On the interface surface,
taskGroupdeclares a group on the Dag or inside another group:How
stageinStagingis thetask
Staging.stage.static, non-private, and needs a no-argument constructor, because the generatedtask bodies instantiate it. Its ID defaults to the class name, as a Dag's does.
run(). The generatedtask classes are named after the class tree, such as
Staging_Checks_Nulls.before,afterandFlow.of.Serialization of task groups, and the
task-groupcapability flag, land in #71190, which is where anative Dag is serialized at all.
prefix_group_id = falseand the display options (tooltip, colours, display name) are left for afollow-up.
Was generative AI tooling used to co-author this PR?