3434import io .grpc .ClientInterceptor ;
3535import io .grpc .ForwardingClientCall .SimpleForwardingClientCall ;
3636import io .grpc .ForwardingClientCallListener .SimpleForwardingClientCallListener ;
37- import io .grpc .Grpc ;
3837import io .grpc .Metadata ;
3938import io .grpc .MethodDescriptor ;
39+ import io .grpc .alts .AltsContextUtil ;
4040import io .opencensus .stats .MeasureMap ;
4141import io .opencensus .stats .Stats ;
4242import io .opencensus .stats .StatsRecorder ;
4747import io .opentelemetry .api .common .Attributes ;
4848import io .opentelemetry .api .common .AttributesBuilder ;
4949import io .opentelemetry .api .trace .Span ;
50- import java .net .InetAddress ;
51- import java .net .InetSocketAddress ;
52- import java .net .SocketAddress ;
5350import java .util .HashMap ;
5451import java .util .Map ;
5552import java .util .concurrent .ExecutionException ;
@@ -109,6 +106,7 @@ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
109106 @ Override
110107 public void start (Listener <RespT > responseListener , Metadata headers ) {
111108 try {
109+ ClientCall <ReqT , RespT > call = this ;
112110 Span span = Span .current ();
113111 DatabaseName databaseName = extractDatabaseName (headers );
114112 String key = extractKey (databaseName , method .getFullMethodName ());
@@ -127,10 +125,9 @@ public void start(Listener<RespT> responseListener, Metadata headers) {
127125 new SimpleForwardingClientCallListener <RespT >(responseListener ) {
128126 @ Override
129127 public void onHeaders (Metadata metadata ) {
130- Boolean isDirectPathUsed =
131- isDirectPathUsed ( getAttributes (). get ( Grpc . TRANSPORT_ATTR_REMOTE_ADDR ) );
128+ // If call contains ALTS information.
129+ boolean isDirectPathUsed = AltsContextUtil . check ( call );
132130 addDirectPathUsedAttribute (compositeTracer , isDirectPathUsed );
133-
134131 processHeader (
135132 metadata , tagContext , attributes , span , compositeTracer , isDirectPathUsed );
136133 super .onHeaders (metadata );
@@ -316,14 +313,4 @@ private void addDirectPathUsedAttribute(
316313 BuiltInMetricsConstant .DIRECT_PATH_USED_KEY .getKey (), Boolean .toString (isDirectPathUsed ));
317314 }
318315 }
319-
320- private Boolean isDirectPathUsed (SocketAddress remoteAddr ) {
321- if (remoteAddr instanceof InetSocketAddress ) {
322- InetAddress inetAddress = ((InetSocketAddress ) remoteAddr ).getAddress ();
323- String addr = inetAddress .getHostAddress ();
324- return addr .startsWith (BuiltInMetricsConstant .DP_IPV4_PREFIX )
325- || addr .startsWith (BuiltInMetricsConstant .DP_IPV6_PREFIX );
326- }
327- return false ;
328- }
329316}
0 commit comments