Skip to content

Exclude scheduled-to-stop members from resolver availability#10919

Draft
prathyushpv wants to merge 1 commit into
mainfrom
ppv/resolver-drain-routing
Draft

Exclude scheduled-to-stop members from resolver availability#10919
prathyushpv wants to merge 1 commit into
mainfrom
ppv/resolver-drain-routing

Conversation

@prathyushpv

@prathyushpv prathyushpv commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

What changed?

AvailableMembers() / AvailableMemberCount() already excluded draining hosts; extend that to hosts with a future stopAt label. The consistent-hash Lookup() ring is left untouched.

Why?

A gracefully-stopping history/matching host sets a future stopAt and reports itself NOT_SERVING, but stays listed in AvailableMembers(). The frontend deep health check pings those peers, they fail, and a new pod's readiness can flip to NOT_SERVING, extending the rollout. An announced-departing host shouldn't count as available — same as draining.

Leaving hosts stay in the lookup ring rather than being removed early: dropping them diverges ring views across nodes and causes ShardOwnershipLost churn during the drain window. Coordinated eviction (#5431) already drops a host from every ring at once, at its stopAt.

How did you test it?

  • built
  • added new unit test(s)
  • covered by existing tests

Potential risks

AvailableMemberCount() feeds per-host rate limits, so remaining hosts get slightly more quota during the drain window — the same trade-off already accepted for draining (#5889), just applied to more hosts.

@prathyushpv prathyushpv force-pushed the ppv/resolver-drain-routing branch from 03136fd to 81038c1 Compare July 3, 2026 22:12
AvailableMembers/AvailableMemberCount already excluded draining hosts;
extend that to hosts with a future stopAt label, via a shared isLeaving
predicate. Such a host has announced its departure and reports itself
NOT_SERVING, so it should not be offered for new requests, the same way
a draining frontend isn't. The consistent-hash lookup ring is left
untouched so ownership transfers once, at the scheduled eviction.
@prathyushpv prathyushpv force-pushed the ppv/resolver-drain-routing branch from 81038c1 to e78d370 Compare July 3, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant