diff options
author | Larry Safran <lsafran@google.com> | 2024-03-14 03:53:34 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-13 20:53:34 -0700 |
commit | 36e9f0dfacc853b5d54f64bb14305f0b4c323589 (patch) | |
tree | 6776aad4284ac503205b1d7cab16add8c1888906 | |
parent | 8a9ce990b0400c9e73ca14e2b4a0be47fc6eeb30 (diff) | |
download | grpc-grpc-java-36e9f0dfacc853b5d54f64bb14305f0b4c323589.tar.gz |
core: Eliminate NPE seen in PickFirstLeafLoadBalancer (#11013)
ref b/329420531
-rw-r--r-- | core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java b/core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java index 3b222eaa1..108950c16 100644 --- a/core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java +++ b/core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java @@ -465,9 +465,13 @@ final class PickFirstLeafLoadBalancer extends LoadBalancer { log.log(Level.FINE, "Received health status {0} for subchannel {1}", new Object[]{newState, subchannelData.subchannel}); healthStateInfo = newState; - if (addressIndex.isValid() - && subchannels.get(addressIndex.getCurrentAddress()).healthListener == this) { - updateHealthCheckedState(subchannelData); + try { + SubchannelData curSubChanData = subchannels.get(addressIndex.getCurrentAddress()); + if (curSubChanData != null && curSubChanData.healthListener == this) { + updateHealthCheckedState(subchannelData); + } + } catch (IllegalStateException e) { + log.fine("Health listener received state change after subchannel was removed"); } } } |