fix: refuse to build QueryCoord target when channel checkpoint is dropped sentinel (#50002)
## Summary - Block dropped-channel checkpoint sentinels (`Timestamp == math.MaxUint64`) at QueryCoord's `UpdateCollectionNextTarget`, before they can be dispatched to QueryNode as a seek position and trigger a streaming-dispatcher panic on secondary clusters. - Add `funcutil.IsDroppedChannelCheckpoint` so the sentinel contract has a single owner; migrate DataCoord's writer/reader to use it. - Return `ErrChannelNotAvailable` with explicit "dropped checkpoint sentinel" detail so the abnormal metadata state is visible in logs and to clients. The sentinel is sticky in DataCoord (`UpdateChannelCheckpoint` cannot overwrite `MaxUint64`); the guard remains in effect until the collection meta is fully dropped, at which point `GetRecoveryInfoV2` returns collection-not-found and the existing path releases the collection. issue: #49996 ## Test plan - [x] `pkg/util/funcutil` unit tests: `TestIsDroppedChannelCheckpoint` (6 sub-cases) + `TestDroppedChannelCheckpointTimestamp` - [x] `internal/querycoordv2/meta` `TestTargetManager`: 3 new sub-tests (`TestUpdateNextTarget_DroppedSentinelRejected`, `TestUpdateNextTarget_SentinelAmongMultiple`, `TestUpdateNextTarget_SentinelDoesNotBurnRetries`); all existing sub-tests still pass - [x] `make static-check` (0 issues across all 4 phases) - [ ] CI 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
Y
yihao.dai committed
bd70c6b749fd4353475fb9a7c00622ea7f05d5b0
Parent: 34937a5
Committed by GitHub <noreply@github.com>
on 5/25/2026, 2:36:32 AM