github-actions[bot] commented on code in PR #64683:
URL: https://github.com/apache/doris/pull/64683#discussion_r3453330957
##########
fe/fe-core/src/main/java/org/apache/doris/qe/runtime/RuntimeFiltersThriftBuilder.java:
##########
@@ -48,17 +56,73 @@ public class RuntimeFiltersThriftBuilder {
private final Set<Integer> broadcastRuntimeFilterIds;
private final Map<RuntimeFilterId, List<RuntimeFilterTarget>> ridToTargets;
private final Map<RuntimeFilterId, Integer> ridToBuilderNum;
+ private final boolean limitBroadcastRuntimeFilterProducers;
+ private final Map<Long, List<Integer>> workerIdToBroadcastRuntimeFilterIds;
private RuntimeFiltersThriftBuilder(
TNetworkAddress mergeAddress, List<RuntimeFilter> runtimeFilters,
Set<Integer> broadcastRuntimeFilterIds,
Map<RuntimeFilterId, List<RuntimeFilterTarget>> ridToTargets,
- Map<RuntimeFilterId, Integer> ridToBuilderNum) {
Review Comment:
This prunes every `TPlanNode.runtime_filters` entry in the fragment, but
that field is not producer-only. `RuntimeFilter.assignToPlanNodes()` adds the
same `RuntimeFilter` to the builder node and to each target scan node, and BE
scan operators register consumers from `tnode.runtime_filters`. For a broadcast
RF with remote targets, a target scan fragment sent to a BE that was not
selected as a producer will lose this descriptor here, so that BE never
registers or applies the runtime filter. Please restrict the pruning to
builder-side descriptors only, or otherwise preserve target/sink consumer
descriptors while still dropping the producer descriptor on non-selected build
workers.
--
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]