Skip to content

Commit

Permalink
fix:fix tracer of triple (sofastack#937)
Browse files Browse the repository at this point in the history
  • Loading branch information
leizhiyuan authored Jun 10, 2020
1 parent ec569f2 commit 741f38e
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.alipay.common.tracer.core.holder.SofaTraceContextHolder;
import com.alipay.common.tracer.core.span.SofaTracerSpan;
import com.alipay.sofa.rpc.context.RpcRunningState;
import com.alipay.sofa.rpc.context.RpcRuntimeContext;
import com.alipay.sofa.rpc.core.request.SofaRequest;
import com.alipay.sofa.rpc.core.response.SofaResponse;
import com.alipay.sofa.rpc.tracer.sofatracer.TracingContextKey;
Expand Down Expand Up @@ -117,8 +118,16 @@ public void onComplete() {
if (RpcRunningState.isDebugMode()) {
LOGGER.info("[7]server processed done received from client:" + requestHeaders);
}

TripleTracerAdapter.serverReceived(sofaRequest, serverServiceDefinition, call, requestHeaders);

//进行一下补偿
SofaTraceContext sofaTraceContext = SofaTraceContextHolder.getSofaTraceContext();
SofaTracerSpan serverSpan = sofaTraceContext.getCurrentSpan();
SofaTracerSpan originalSpan = (SofaTracerSpan) TracingContextKey.getKey().get(ctxWithSpan);
serverSpan.setStartTime(originalSpan.getStartTime());
serverSpan.setTag("remote.ip", originalSpan.getTagsWithStr().get("remote.ip"));
long endTime = RpcRuntimeContext.now();
serverSpan.setTag("biz.impl.time", endTime - originalSpan.getStartTime());
TripleTracerAdapter.serverSend(sofaRequest, requestHeaders, sofaResponse, throwable[0]);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,6 @@ public class TripleContants {

public static final String SOFA_REQUEST_KEY = "_SOFA_REQUEST";

public static final String SOFA_REMOTE_ADDR_KEY = "_SOFA_REMOTE_ADDR";

public static final String SOFA_APP_RESPONSE_KEY = "_SOFA_RESPONSE";

public static final String SOFA_APP_EXCEPTION_KEY = "_SOFA_EXCEPTION";

public static final String SOFA_CONSUMER_CONFIG_KEY = "_SOFA_CONSUMER_CONFIG";

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import com.alipay.sofa.rpc.common.utils.JSONUtils;
import com.alipay.sofa.rpc.common.utils.StringUtils;
import com.alipay.sofa.rpc.config.ConsumerConfig;
import com.alipay.sofa.rpc.context.RpcInternalContext;
import com.alipay.sofa.rpc.context.RpcInvokeContext;
import com.alipay.sofa.rpc.core.request.SofaRequest;
import com.alipay.sofa.rpc.core.response.SofaResponse;
Expand All @@ -36,7 +35,6 @@
import com.alipay.sofa.rpc.event.ServerSendEvent;
import com.alipay.sofa.rpc.log.Logger;
import com.alipay.sofa.rpc.log.LoggerFactory;
import com.alipay.sofa.rpc.server.triple.TripleContants;
import com.alipay.sofa.rpc.server.triple.TripleHeadKeys;
import io.grpc.Grpc;
import io.grpc.Metadata;
Expand Down Expand Up @@ -224,20 +222,15 @@ public static void serverReceived(SofaRequest sofaRequest, ServerServiceDefiniti
sofaRequest.addRequestProp(RemotingConstants.RPC_TRACE_NAME, traceMap);
}

final RpcInvokeContext context = RpcInvokeContext.getContext();
context.put(TripleContants.SOFA_REQUEST_KEY, sofaRequest);
if (EventBus.isEnable(ServerReceiveEvent.class)) {
EventBus.post(new ServerReceiveEvent(sofaRequest));
}

String remoteIp = "";
SocketAddress socketAddress = call.getAttributes().get(
Grpc.TRANSPORT_ATTR_REMOTE_ADDR);
context.put(TripleContants.SOFA_REMOTE_ADDR_KEY, socketAddress);

RpcInternalContext internalContext = RpcInternalContext.getContext();
internalContext.setProviderSide(true);
if (socketAddress instanceof InetSocketAddress) {
internalContext.setRemoteAddress((InetSocketAddress) socketAddress);
}
if (EventBus.isEnable(ServerReceiveEvent.class)) {
EventBus.post(new ServerReceiveEvent(sofaRequest));
remoteIp = ((InetSocketAddress) socketAddress).getHostName();
}

String methodName;
Expand All @@ -247,11 +240,13 @@ public static void serverReceived(SofaRequest sofaRequest, ServerServiceDefiniti
SofaTraceContext sofaTraceContext = SofaTraceContextHolder.getSofaTraceContext();
SofaTracerSpan serverSpan = sofaTraceContext.getCurrentSpan();
if (serverSpan != null) {
//FIXME modify the dep relation
serverSpan.setTag("service", sofaRequest.getTargetServiceUniqueName());
serverSpan.setTag("method", methodName);
// 从请求里获取ConsumerTracerFilter额外传递的信息
serverSpan.setTag("remote.app", (String) sofaRequest.getRequestProp(HEAD_APP_NAME));
serverSpan.setTag("protocol", RpcConstants.PROTOCOL_TYPE_TRIPLE);
serverSpan.setTag("remote.ip", remoteIp);
}
} catch (Throwable e) {
LOGGER.warn("triple serverReceived tracer error", e);
Expand Down

0 comments on commit 741f38e

Please sign in to comment.