-
Notifications
You must be signed in to change notification settings - Fork 9.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Network-partition aware health service #8673
Comments
/cc @jpbetz |
/cc @wojtek-t |
We still plan to do this (maybe in v3.5). Merging with #8022, since both server and client need reason about network partitions. Current HTTP/2 ping client and server do not reason about network partition.
ref. #7321 |
Another use case kubernetes/kubernetes#59848 (comment)
|
And just to clarify, currently require leader metadata must be passed to prevent this: wch := cli.Watch(clientv3.WithRequireLeader(context.Background()), "foo")
// will be closed when the node loses leader wch := cli.Watch(context.Background(), "foo")
// block forever, even if a node loses leader |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions. |
clientv3 health balancer should be able to reason about network-partitions with keepalive HTTP/2 ping.
#8660 makes balancer aware of network partitions on time-out errors.
But only handles the case when client specifies context time-out.
We can do better.
x
context.Background
y
, wherey < x
A
in 3-node clusterA
becomes isolatedA
blocks until time-outx
context.Background
When
y < x
, keepalive pings should detect that memberA
cannot reach other members.Then trigger endpoint switch before time-out
x
elapse.The text was updated successfully, but these errors were encountered: