mirror of https://github.com/grpc/grpc-java.git
Implementations of ManagedClientTransport.start() are restricted from calling the passed listener until start() returns, in order to avoid reentrency problems with locks. For most transports this isn't a problem, because they need additional threads anyway. InProcess uses no additional threads naturally so ends up needing a thread just to notifyReady. Now transports can just return a Runnable that can be run after locks are dropped. This was originally intended to be a performance optimization, but the thread also causes nondeterminism because RPCs are delayed until notifyReady is called. So avoiding the thread reduces needless fakes during tests. |
||
|---|---|---|
| .. | ||
| src/main | ||
| build.gradle | ||