aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Safran <lsafran@google.com>2024-03-14 03:53:34 +0000
committerGitHub <noreply@github.com>2024-03-13 20:53:34 -0700
commit36e9f0dfacc853b5d54f64bb14305f0b4c323589 (patch)
tree6776aad4284ac503205b1d7cab16add8c1888906
parent8a9ce990b0400c9e73ca14e2b4a0be47fc6eeb30 (diff)
downloadgrpc-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.java10
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");
}
}
}