github-actions[bot] commented on code in PR #64596:
URL: https://github.com/apache/doris/pull/64596#discussion_r3443444094
##########
be/src/exec/operator/nested_loop_join_build_operator.cpp:
##########
@@ -112,6 +130,14 @@ Status
NestedLoopJoinBuildSinkOperatorX::sink_impl(doris::RuntimeState* state, B
}
if (eos) {
+ if (!state->is_cancelled()) {
+ auto build_blocks = local_state._shared_state->build_blocks.copy();
+ RETURN_IF_ERROR(
+
local_state._runtime_filter_producer_helper->process(state, build_blocks));
+ }
+ local_state._shared_state->build_side_eos = true;
Review Comment:
This wakes the probe after a prefix is published, but it never pauses the
build sink itself. The sink dependency is created ready, and this branch does
not call `block()`, so `PipelineTask::execute()` keeps looping through
`get_block_after_projects()`/`sink()` until the build source blocks, reaches
EOS, or the task time slice expires. With a fast build child that can produce
the full build within that window, the probe side only gets scheduled after the
build has already been fully consumed and buffered, so LIMIT cannot set
`build_side_no_more_required` early. That leaves the new path with the old
behavior for the fast-build LIMIT case. Please make prefix publication a real
request/response handoff, for example by blocking the build sink dependency
after publishing a prefix and having `_request_more_build_data()` wake it with
`set_ready_to_write()` after its race recheck, or otherwise force the build
task to yield here.
--
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]