Skip to content
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

Learners do not implement GRPC health checks #18801

Closed
4 tasks done
elias-dbx opened this issue Oct 28, 2024 · 3 comments
Closed
4 tasks done

Learners do not implement GRPC health checks #18801

elias-dbx opened this issue Oct 28, 2024 · 3 comments
Labels

Comments

@elias-dbx
Copy link

Bug report criteria

What happened?

I was testing out the new experimental health checks: #17914

What I found is that if there was a learner in the cluster, the RPCs would fail with:

{"level":"warn","ts":"2024-10-05T01:35:11.309621Z","logger":"etcd-client","caller":"io_etcd_go_etcd_client_v3/retry_interceptor.go:63","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc0011bc780/10.247.133.150:5000","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest balancer error: last connection error: connection active but received health check RPC error: rpc error: code = Unavailable desc = etcdserver: rpc not supported for learner"}

I believe this comes from here where we modify what RPCs learners implement:

func isRPCSupportedForLearner(req any) bool {

Should we allow learners to receive grpc health checks?

What did you expect to happen?

Learners do not cause RPCs to fail when experimental-stop-grpc-service-on-defrag is enabled.

How can we reproduce it (as minimally and precisely as possible)?

Enable experimental-stop-grpc-service-on-defrag, make a learner, create an etcd client with the following grpc service config:

`{"loadBalancingPolicy": "round_robin", "healthCheckConfig": {"serviceName": ""}}`

Anything else we need to know?

No response

Etcd version (please run commands below)

$ etcd --version
# paste output here
v3.5.14
$ etcdctl version
# paste output here

Etcd configuration (command line flags or environment variables)

paste your configuration here

Etcd debug information (please run commands below, feel free to obfuscate the IP address or FQDN in the output)

$ etcdctl member list -w table
# paste output here

$ etcdctl --endpoints=<member list> endpoint status -w table
# paste output here

Relevant log output

No response

@ahrtr
Copy link
Member

ahrtr commented Nov 8, 2024

cc @tjungblu @chaochn47 do you have time to take a look at this ticket? thx

@tjungblu
Copy link
Contributor

tjungblu commented Nov 8, 2024

Learners do not cause RPCs to fail when experimental-stop-grpc-service-on-defrag is enabled.

are you sure that is related? I would assume you just have a learner member in your client and you hit it with a linearized read/write call.

@ahrtr ahrtr closed this as completed Nov 14, 2024
@ahrtr
Copy link
Member

ahrtr commented Nov 14, 2024

Thanks @tjungblu for the comment.

@elias-dbx if you still have any questions, please raise them in discussions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

3 participants