Skip to content

fix: stop the dropped-channel sentinel from poisoning vchannel-health (v1.2.x) - #528

Merged
czs007 merged 1 commit into
milvus-io:v1.2.xfrom
czs007:vchfix-12x
Aug 26, 2026
Merged

fix: stop the dropped-channel sentinel from poisoning vchannel-health (v1.2.x)#528
czs007 merged 1 commit into
milvus-io:v1.2.xfrom
czs007:vchfix-12x

Conversation

@czs007

@czs007 czs007 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Cherry-pick of #527 onto v1.2.x, so the fix can ship as v1.2.1.

show vchannel-health in the released v1.2.0 flags every healthy vchannel as FROZEN on any cluster that has a dropped channel: DataCoord writes funcutil.DroppedChannelCheckpointTimestamp (math.MaxUint64, decoding to the year 4199) into a dropped channel's checkpoint, and that value became the reference the command measured every other vchannel against.

Seen on a live 2.6 cluster: 196 reported FROZEN, only 19 had actually stopped.

Same commit as #527. Verified against a local 2.6.17 cluster: v1.2.0 reports lag=1143016227min and flags healthy vchannels; this build reports lag=0min and none. gofmt, build and golangci-lint clean.

DataCoord marks a dropped channel by writing
funcutil.DroppedChannelCheckpointTimestamp (math.MaxUint64) into its channel
checkpoint, which decodes to the year 4199. `show vchannel-health` took the
newest checkpoint anywhere in the cluster as the reference for how far behind
a vchannel is, so one dropped channel dragged the reference to the year 4199
and every vchannel reported a lag of ~1.14e9 minutes. On a cluster with any
drop in flight the command flagged every healthy vchannel FROZEN, which is
the opposite of what it is for.

Exclude the sentinel, zero, and any future-dated value from the reference,
render a vchannel that carries the sentinel as `dropped` under its own
DROPPED_CHECKPOINT flag, and keep it out of the FROZEN verdict.

Two smaller changes come with it:

Label the plain-text output as UTC. The table header already said so; the
one-line-command output, which is how this is usually run against a customer
cluster, did not, leaving the reader no way to know the timezone.

Report the checkpoint's message ID as a seek position. DataCoord hands this
position to the flusher through GetChannelRecoveryInfo, and the flusher
starts its WAL scanner from the smallest one across the vchannels it serves,
so a position that has aged out of the message queue's retention keeps the
flusher from starting. Whoever is looking at a frozen vchannel needs that
value to compare against the topic's earliest available offset. An 8-byte ID
is a Kafka offset and is printed as the integer it is; anything else is
printed as hex.

Signed-off-by: zhenshan.cao <zhenshan.cao@zilliz.com>
@sre-ci-robot
sre-ci-robot requested a review from congqixia August 26, 2026 19:15
@sre-ci-robot

Copy link
Copy Markdown
Collaborator

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: czs007
To complete the pull request process, please assign congqixia after the PR has been reviewed.
You can assign the PR to them by writing /assign @congqixia in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@mergify

mergify Bot commented Aug 26, 2026

Copy link
Copy Markdown

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@czs007
czs007 merged commit 0728231 into milvus-io:v1.2.x Aug 26, 2026
4 of 5 checks passed
czs007 added a commit that referenced this pull request Aug 26, 2026
v1.2.0 shipped `show vchannel-health` with a defect that made it flag every
healthy vchannel as FROZEN on any cluster with a dropped channel (#528). Bump
the version so a build from this branch reports `Birdwatcher Version 1.2.1`.

Signed-off-by: zhenshan.cao <zhenshan.cao@zilliz.com>
czs007 added a commit that referenced this pull request Aug 26, 2026
Version bump so a build from `v1.2.x` reports `Birdwatcher Version
1.2.1`, ahead of tagging v1.2.1.

v1.2.0 shipped `show vchannel-health` with the defect fixed in #528: a
dropped channel's reserved checkpoint value became the reference the
command measured every other vchannel against, so every healthy vchannel
was reported FROZEN.

One line, same shape as #526.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants