Skip to content

Commit

Permalink
Increase the extensibility of the header conversion context.
Browse files Browse the repository at this point in the history
  • Loading branch information
liujianjun.ljj committed Jan 22, 2025
1 parent c304171 commit 66d35b1
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,8 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(final ServerCall<Re
SofaResponse sofaResponse = new SofaResponse();
final Throwable[] throwable = { null };
SofaRequest sofaRequest = new SofaRequest();
String userId = TripleTracerAdapter.getUserId(requestHeaders);
TripleTracerAdapter.serverReceived(sofaRequest, serverServiceDefinition, call, requestHeaders);
SofaTraceContext sofaTraceContext = SofaTraceContextHolder.getSofaTraceContext();
SofaTracerSpan serverSpan = sofaTraceContext.getCurrentSpan();

Context ctxWithSpan = Context.current()
.withValue(TracingContextKey.getKey(), serverSpan)
.withValue(TracingContextKey.getSpanContextKey(), serverSpan.context())
.withValue(TracingContextKey.getKeySofaRequest(), sofaRequest)
.withValue(TracingContextKey.getKeyMetadata(), requestHeaders)
.withValue(TracingContextKey.getKeyUserId(), userId);
Context ctxWithSpan = convertHeaderToContext(call, requestHeaders, sofaRequest, serverServiceDefinition);

//这里和下面不在一个线程
if (RpcRunningState.isDebugMode()) {
Expand Down Expand Up @@ -170,4 +161,19 @@ private StatusRuntimeException fromThrowable(Throwable t) {
};
return result;
}

protected <ReqT, RespT> Context convertHeaderToContext(ServerCall<ReqT, RespT> call,
Metadata requestHeaders, SofaRequest sofaRequest,
ServerServiceDefinition serverServiceDefinition) {
TripleTracerAdapter.serverReceived(sofaRequest, serverServiceDefinition, call, requestHeaders);
String userId = TripleTracerAdapter.getUserId(requestHeaders);
SofaTraceContext sofaTraceContext = SofaTraceContextHolder.getSofaTraceContext();
SofaTracerSpan serverSpan = sofaTraceContext.getCurrentSpan();
return Context.current()
.withValue(TracingContextKey.getKey(), serverSpan)
.withValue(TracingContextKey.getSpanContextKey(), serverSpan.context())
.withValue(TracingContextKey.getKeySofaRequest(), sofaRequest)
.withValue(TracingContextKey.getKeyMetadata(), requestHeaders)
.withValue(TracingContextKey.getKeyUserId(), userId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -307,8 +307,8 @@ public static void serverSend(SofaRequest request, final Metadata requestHeaders
public static String getUserId(Metadata requestHeaders) {
String unitInfo = requestHeaders.get(HEAD_KEY_UNIT_INFO);
Map<String, String> unitInfoMap = JSON.parseObject(unitInfo,
new TypeReference<Map<String, String>>() {
});
new TypeReference<Map<String, String>>() {
});
if (unitInfoMap != null) {
return unitInfoMap.get(USERID_KEY);
}
Expand Down

0 comments on commit 66d35b1

Please sign in to comment.