grpclb: LoadBalancer.requestConnection() may be ignored if it's called before subchannels are created
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 12.1k
- Forks
- 4k
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 37
Description
What version of gRPC-Java are you using?
v1.32.1
What did you expect to see?
Calling ManagedChannel.getState(true) will make the channel to try to connect to the server at least once, no matter when it's called.
What did you see instead?
Calling ManagedChannel.getState(true) makes the channel try to connect to server only if it's called after subchannels are created, i.e., after name resolution in pick-first, and after backend addresses are received in grpclb. If getState(true) is called before that point, the channel won't try to connect to servers after subchannels are created, unless getState(true) is called again.
/cc @ejona86
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with ManagedChannel.getState(true) and LoadBalancer.requestConnection(), then compare the pick-first and grpclb timing described in the report. Reproduce a call made before subchannels are created; the fix is complete when that call still causes a server connection after subchannels become available.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- grpc, java
- Domain
- api, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100