github-actions[bot] commented on code in PR #67177:
URL: https://github.com/apache/doris/pull/67177#discussion_r3870195953
##########
fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java:
##########
@@ -1100,6 +1103,18 @@ protected Pair<PlanNode, LocalExchangeType>
enforceRequire(
Pair<PlanNode, LocalExchangeType> childOutput =
child.enforceAndDeriveLocalExchange(translatorContext, this,
require);
+ // A serial consumer must not implicitly reduce a non-serial subtree
to one pipeline
+ // task. Besides losing parallelism, that can make a remote Exchange
expose fewer
+ // receiver tasks than FE addresses. Keep the subtree parallel and
make the N-to-one
+ // transition explicit. PASS_TO_ONE keeps every upstream receiver task
alive and
+ // funnels their output into the serial downstream pipeline's only
task.
+ if (passToOneAtSerialBoundary && childOutput.second !=
LocalExchangeType.PASS_TO_ONE) {
Review Comment:
[P1] Restore the serial-Sort coverage with this new boundary. The live FE UT
fails in `LocalShuffleNodeCoverageTest.testSortNodeBranches` at line 764: it
expected the original `SerialTrackingScanNode`, but this predicate inserts a
`LocalExchangeNode`. That fixture assigns a `useSerialSource=true` fragment
only to the SortNode, leaving its serial child fragment-less, so
`child.isSerialOperatorOnBe()` returns false here. Please wire the fixture like
production (including the analogous ordered-analytic case) and rerun FE UT.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]