github-actions[bot] commented on code in PR #69554:
URL: https://github.com/apache/doris/pull/69554#discussion_r4361269076
##########
fe/fe-core/src/main/java/org/apache/doris/catalog/Tablet.java:
##########
@@ -216,7 +216,7 @@ protected Multimap<Long, Long>
getNormalReplicaBackendPathMapImpl(String beEndpo
SystemInfoService infoService = Env.getCurrentSystemInfo();
for (Replica replica : getReplicas()) {
long backendId = idGetter.get(replica, beEndpoint);
- if (!infoService.checkBackendAlive(backendId)) {
+ if (!infoService.checkBackendLoadAvailable(backendId)) {
Review Comment:
[P1] Preserve alive replicas for metadata callers
`getNormalReplicaBackendIds()` also delegates to this helper, so the new
load filter changes metadata operations. With all replicas of a
non-light-schema table alive but load-disabled,
`AlterLightSchChangeHelper.buildParams()` now issues no column-ID RPCs, yet
`updateTableMeta()` still sets light schema change to true and journals success
with the existing FE column IDs/max IDs unset. This is reachable through `ALTER
TABLE ... SET ("light_schema_change"="true")` or the enabled conversion daemon.
Even one disabled backend in a healthy three-replica table makes
`OlapTable.getArbitraryTabletBucketsSeq()` see two IDs against an allocation of
three, rejecting `ALTER TABLE t SET ("colocate_with"="new_group")`. That check
also runs during `Env.replayModifyTableColocate()`: an operation accepted by an
older master is caught and skipped on this head, leaving follower colocation
metadata different. Preserve alive-replica enumeration for these metadata
callers and apply load eligibility only to load destinations.
##########
fe/fe-core/src/main/java/org/apache/doris/catalog/Tablet.java:
##########
@@ -216,7 +216,7 @@ protected Multimap<Long, Long>
getNormalReplicaBackendPathMapImpl(String beEndpo
SystemInfoService infoService = Env.getCurrentSystemInfo();
for (Replica replica : getReplicas()) {
long backendId = idGetter.get(replica, beEndpoint);
- if (!infoService.checkBackendAlive(backendId)) {
+ if (!infoService.checkBackendLoadAvailable(backendId)) {
Review Comment:
[P2] Reroute cloud loads before dropping shutdown backends
This shared path also handles `CloudTablet`, whose single logical replica
has already selected one backend. During `stop_be.sh --grace`, heartbeats set
`isShutdown=true` while the backend remains alive waiting for existing queries.
`CloudReplica.getColocatedBeId()` still hashes over alive backends, and
`hashReplicaToBes()` likewise permits the draining backend. If bucket A is
assigned there while another healthy backend exists, this new gate removes its
only entry and `OlapTableSink.createLocation()` fails with `REPLICA_FEW_ERR`;
colocated retries keep the same assignment throughout the drain. Configured
multi-replica routing can hit the same failure intermittently.
Previously the alive target remained usable while its writer RPC service was
still running during the drain. The shutdown exclusion needs an eligible
replacement selected upstream, or this change needs to remain scoped until
those cloud selectors support it. Simply filtering their sole result introduces
load failures during a graceful restart.
--
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]