File tree Expand file tree Collapse file tree 1 file changed +7
-3
lines changed
core/src/main/java/io/grpc Expand file tree Collapse file tree 1 file changed +7
-3
lines changed Original file line number Diff line number Diff line change @@ -69,8 +69,8 @@ private static class PickFirstBalancer<T> extends LoadBalancer<T> {
6969
7070 private final Object lock = new Object ();
7171
72- @ GuardedBy ( "lock" )
73- private EquivalentAddressGroup addresses ;
72+ /** "lock" must be held when mutating. */
73+ private volatile EquivalentAddressGroup addresses ;
7474 @ GuardedBy ("lock" )
7575 private InterimTransport <T > interimTransport ;
7676 @ GuardedBy ("lock" )
@@ -86,7 +86,10 @@ private PickFirstBalancer(TransportManager<T> tm) {
8686
8787 @ Override
8888 public T pickTransport (Attributes affinity ) {
89- EquivalentAddressGroup addressesCopy ;
89+ EquivalentAddressGroup addressesCopy = addresses ;
90+ if (addressesCopy != null ) {
91+ return tm .getTransport (addressesCopy );
92+ }
9093 synchronized (lock ) {
9194 if (closed ) {
9295 return tm .createFailingTransport (SHUTDOWN_STATUS );
@@ -157,6 +160,7 @@ public void shutdown() {
157160 return ;
158161 }
159162 closed = true ;
163+ addresses = null ;
160164 savedInterimTransport = interimTransport ;
161165 interimTransport = null ;
162166 }
You can’t perform that action at this time.
0 commit comments