control-connection: run topology removals through cluster - #1036
Draft
dkropachev wants to merge 1 commit into
Draft
dkropachev wants to merge 1 commit into
dkropachev wants to merge 1 commit into
Conversation
Node-list refresh removed missing host IDs directly from metadata, bypassing session, policy, listener, and control-connection cleanup. Route snapshot removals through Cluster without recursively refreshing, preserve Hosts reindexed under a new ID, and serialize overlapping refreshes so stale cleanup cannot tear down a live host. Fixes #1007
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
8 tasks
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Node-list reconciliation removes absent host IDs directly from metadata. That bypasses the cluster removal lifecycle, leaving session pools, load-balancing policies, listeners, control-connection state, and metrics associated with the removed host active.
Host-ID reindexing adds two constraints: stale metadata aliases must be removed without tearing down the still-registered
Host, and overlapping refreshes must not interleave reindexing with removal lifecycle work.Fix
Route absent snapshot IDs through a cluster removal entry point that performs lifecycle cleanup without recursively starting another topology refresh. Preserve a
Hostthat remains registered under a new ID, and serialize node-list refreshes so reindexing and stale-ID cleanup cannot overlap.Fixes #1007
Dependency
This draft is stacked on #1035 for the exact-
Hostregistration helper. #1035 is itself stacked on #1032. Retarget this PR after the preceding drafts merge.Testing
TZ=UTC uv run pytest -q tests/unit/test_cluster.py tests/unit/test_control_connection.py— 122 passedgit diff --checkPre-review checklist
./docs/source/. (Not applicable: internal topology lifecycle fix.)Fixes:annotations to PR description.