mirror of https://github.com/grpc/grpc-java.git
DelayedClientTransport already had to handle all the cases, so ManagedChannelImpl picking was acting only as an optimization. Optimizing DelayedClientTransport to avoid the lock when not queuing makes ManagedChannelImpl picking entirely redundant, and allows us to remove the duplicate race-handling logic. This avoids double-picking when queuing, where ManagedChannelImpl does a pick, decides to queue, and then DelayedClientTransport re-performs the pick because it doesn't know which pick version was used. This was noticed with RLS, which mutates state within the picker. |
||
|---|---|---|
| .. | ||
| src | ||
| BUILD.bazel | ||
| build.gradle | ||