github-actions[bot] commented on code in PR #67518:
URL: https://github.com/apache/doris/pull/67518#discussion_r4014732889
##########
fe/fe-core/src/main/java/org/apache/doris/planner/MaterializationNode.java:
##########
@@ -154,7 +166,17 @@ public void initNodeInfo() {
context = new ConnectContext();
}
ComputeGroup computeGroup = context.getComputeGroupSafely();
- for (Backend backend :
policy.getCandidateBackends(computeGroup.getBackendList())) {
+ // The local compute group backends and the remote doris catalog
backends go through
+ // the same policy: the remote meta cache may still advertise dead
backends and an
+ // unreachable entry makes the second phase fetch fail eagerly. On a
remote Backend
+ // only the alive flag is carried (Backend.fromThrift), so the
query-available check
+ // degrades to it. Id conflicts are rejected before the plan rewrite
+ // (LazyMaterializeTopN), so no dedupe here.
+ List<Backend> candidates = ImmutableList.<Backend>builder()
+ .addAll(computeGroup.getBackendList())
+ .addAll(remoteBackends)
+ .build();
+ for (Backend backend : policy.getCandidateBackends(candidates)) {
Review Comment:
[P1] Do not apply the local backend blacklist to remote IDs.
`getCandidateBackends()` always calls `SimpleScheduler.isAvailable()`, whose
process-global blacklist is keyed only by numeric backend ID. If local BE 100
is dead/blacklisted while an independently numbered remote BE 100 is healthy,
`hasRemoteBackendIdConflict()` first removes local 100 from its candidate set
and therefore allows the rewrite, but this combined policy call then removes
remote 100 as well. The distributed scan worker checks only the remote
`Backend.isQueryAvailable()`, so phase one can still emit row IDs owned by 100;
`nodes_info` lacks 100 and BE reproduces `MaterializationSinkOperatorX failed
to find rpc_struct`. Please filter remote entries without the local-ID
blacklist (or namespace blacklist state by cluster), and validate/carry the
exact final ID-to-endpoint snapshot.
--
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]