You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This epic tracks the driver refactor needed to stop treating endpoint/address as host identity, make host_id the canonical identity, and put topology and pool lifecycle changes behind explicit, testable paths.
Today Host.endpoint is both mutable topology/address state and part of Host equality/hash behavior. Metadata, control connection refresh, session pools, load-balancing policies, client routes, and async pool creation can observe different versions of host state. That makes endpoint changes unsafe and makes it possible for stale pools or connections to publish work after the host has moved or been replaced.
Target architecture
host_id is the only stable host identity.
endpoint is connectivity/address metadata, not identity.
Endpoint lookup remains available only as a secondary index for discovery/event translation, for example _host_id_by_endpoint.
A same-host_id, different-endpoint update is handled through one explicit endpoint replacement flow.
A same-endpoint, different-host_id observation is treated as node replacement/rebirth, not the same host.
Host.__eq__ and Host.__hash__ must stop depending on mutable endpoint state.
Host identity/topology fields should become immutable from normal driver code after the replacement/update flow exists.
Runtime health remains mutable: up/down state, conviction policy state, reconnection handler, and pool health can still change.
Session pools and connections must be fenced by topology generation/version so stale async work cannot publish into current state.
Fix pool management #382 - Continue the broader pool-management architecture cleanup once the scoped host identity, endpoint replacement, and stale-publication correctness work has landed.
Summary
This epic tracks the driver refactor needed to stop treating endpoint/address as host identity, make
host_idthe canonical identity, and put topology and pool lifecycle changes behind explicit, testable paths.Today
Host.endpointis both mutable topology/address state and part ofHostequality/hash behavior. Metadata, control connection refresh, session pools, load-balancing policies, client routes, and async pool creation can observe different versions of host state. That makes endpoint changes unsafe and makes it possible for stale pools or connections to publish work after the host has moved or been replaced.Target architecture
host_idis the only stable host identity.endpointis connectivity/address metadata, not identity._host_id_by_endpoint.host_id, different-endpoint update is handled through one explicit endpoint replacement flow.host_idobservation is treated as node replacement/rebirth, not the same host.Host.__eq__andHost.__hash__must stop depending on mutable endpoint state.Hostidentity/topology fields should become immutable from normal driver code after the replacement/update flow exists.Tracked issues
Hostequality/hash identity.host_id.ResponseFutureusing or returning connections through stale endpoint pools.HostConnectionfailures affecting replacement/current pools.Hostidentity and topology fields after the replacement flow is in place.Non-goals
Acceptance criteria
host_id, not endpoint/address.hash(host)remains stable across endpoint/topology updates.Hostobjects have equal hashes.host_idwhenhost_idis known.host_idendpoint movement updates metadata, sessions, pools, policies, and route state consistently.host_idis handled as host replacement/rebirth.Proposed Implementation Order
host_idthe canonical host identity and remove endpoint-first host lookup/update behavior from topology paths.host_idendpoint replacement flow and route control connection refresh through it.Hostidentity/topology fields after direct mutation callsites are gone and the replacement flow owns endpoint movement.