mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-28 14:35:27 +08:00
issue: #46393 RO node can be created from two sources: stopping a QueryNode or replica node transfer (e.g., suspend node). Before this fix, there were two defects and one constraint that caused a deadlock: Defects: 1. LeaderChecker does not sync segment distribution to RO nodes 2. Scheduler only cancels tasks on stopping nodes, not RO nodes Constraint: - Balance channel task blocks waiting for new delegator to become serviceable (via sync segment) before executing release action Deadlock scenario: When target node becomes RO node (but not stopping) during balance channel execution, the task gets stuck because: - Cannot sync segment to RO node (defect 1) -> task blocks - Task is not cancelled since node is not stopping (defect 2) PR #45949 attempted to fix defect 1 but was not successful. This PR unifies RO node handling by: - LeaderChecker: only sync segment distribution to RW nodes - Scheduler: cancel task when target node becomes RO node - Simplify checkStale logic with unified node state checking Signed-off-by: Wei Liu <wei.liu@zilliz.com>