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

Open
4 tasks done
elias-dbx opened this issue Oct 28, 2024 · 0 comments
Open
4 tasks done

Learners do not implement GRPC health checks #18801

elias-dbx opened this issue Oct 28, 2024 · 0 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

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

1 participant