grpc / grpc/grpc-java

grpclb: LoadBalancer.requestConnection() may be ignored if it's called before subchannels are created

Open
#7,435 0 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.