Skip to content

Commit fa22dce

Browse files
committed
otel: fixes NPE
1 parent 926c32b commit fa22dce

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

core/src/main/java/io/grpc/internal/InternalSubchannel.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -589,8 +589,10 @@ public Attributes filterTransport(Attributes attributes) {
589589
public void transportReady() {
590590
channelLogger.log(ChannelLogLevel.INFO, "READY");
591591
subchannelMetrics.recordConnectionAttemptSucceeded(buildLabelSet(
592-
addressIndex.getCurrentEagAttributes().get(NameResolver.ATTR_BACKEND_SERVICE),
593-
addressIndex.getCurrentEagAttributes().get(LoadBalancer.ATTR_LOCALITY_NAME),
592+
getAttributeOrDefault(
593+
addressIndex.getCurrentEagAttributes(), NameResolver.ATTR_BACKEND_SERVICE),
594+
getAttributeOrDefault(
595+
addressIndex.getCurrentEagAttributes(), LoadBalancer.ATTR_LOCALITY_NAME),
594596
null,
595597
extractSecurityLevel(
596598
addressIndex.getCurrentEagAttributes().get(GrpcAttributes.ATTR_SECURITY_LEVEL))
@@ -625,10 +627,10 @@ public void transportShutdown(final Status s) {
625627
ChannelLogLevel.INFO, "{0} SHUTDOWN with {1}", transport.getLogId(), printShortStatus(s));
626628
shutdownInitiated = true;
627629
subchannelMetrics.recordConnectionAttemptFailed(buildLabelSet(
628-
addressIndex.getCurrentEagAttributes().get(NameResolver.ATTR_BACKEND_SERVICE),
629-
addressIndex.getCurrentEagAttributes().get(LoadBalancer.ATTR_LOCALITY_NAME),
630+
getAttributeOrDefault(addressIndex.getCurrentEagAttributes(), NameResolver.ATTR_BACKEND_SERVICE),
631+
getAttributeOrDefault(addressIndex.getCurrentEagAttributes(), LoadBalancer.ATTR_LOCALITY_NAME),
630632
null, null
631-
));
633+
));
632634
syncContext.execute(new Runnable() {
633635
@Override
634636
public void run() {
@@ -670,8 +672,10 @@ public void transportTerminated() {
670672
filter.transportTerminated(transport.getAttributes());
671673
}
672674
subchannelMetrics.recordDisconnection(buildLabelSet(
673-
addressIndex.getCurrentEagAttributes().get(NameResolver.ATTR_BACKEND_SERVICE),
674-
addressIndex.getCurrentEagAttributes().get(LoadBalancer.ATTR_LOCALITY_NAME),
675+
getAttributeOrDefault(
676+
addressIndex.getCurrentEagAttributes(), NameResolver.ATTR_BACKEND_SERVICE),
677+
getAttributeOrDefault(
678+
addressIndex.getCurrentEagAttributes(), LoadBalancer.ATTR_LOCALITY_NAME),
675679
"Peer Pressure",
676680
extractSecurityLevel(
677681
addressIndex.getCurrentEagAttributes().get(GrpcAttributes.ATTR_SECURITY_LEVEL))
@@ -702,6 +706,11 @@ private String extractSecurityLevel(SecurityLevel securityLevel) {
702706
throw new IllegalArgumentException("Unknown SecurityLevel: " + securityLevel);
703707
}
704708
}
709+
710+
private String getAttributeOrDefault(Attributes attributes, Attributes.Key<String> key) {
711+
String value = attributes.get(key);
712+
return value == null ? "" : value;
713+
}
705714
}
706715

707716
// All methods are called in syncContext

0 commit comments

Comments
 (0)