Skip to content

Commit 9ff4aa5

Browse files
committed
fix:修复高并发下Feign在请求头添加traceId的问题
1 parent 3cc2486 commit 9ff4aa5

File tree

1 file changed

+10
-6
lines changed
  • dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/service/trace

1 file changed

+10
-6
lines changed

dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/service/trace/FeignService.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,16 @@ public static void solveSyncInvoke(MethodEvent event, AtomicInteger invokeIdSequ
3737
addHeaderMethod.setAccessible(true);
3838
String traceId = ContextManager.nextTraceId();
3939
// clear old traceId header
40-
addHeaderMethod.invoke(template, ContextManager.getHeaderKey(), new String[]{});
41-
addHeaderMethod.invoke(template, ContextManager.getParentKey(), new String[]{});
42-
addHeaderMethod.invoke(template, ContextManager.getHeaderKey(), new String[]{traceId});
43-
addHeaderMethod.invoke(template, ContextManager.getParentKey(),
44-
new String[]{String.valueOf(EngineManager.getAgentId())});
45-
40+
/*
41+
防止高并发下的treeMap修改问题,暂时可解决
42+
*/
43+
synchronized (template){
44+
addHeaderMethod.invoke(template, ContextManager.getHeaderKey(), new String[]{});
45+
addHeaderMethod.invoke(template, ContextManager.getParentKey(), new String[]{});
46+
addHeaderMethod.invoke(template, ContextManager.getHeaderKey(), new String[]{traceId});
47+
addHeaderMethod.invoke(template, ContextManager.getParentKey(),
48+
new String[]{String.valueOf(EngineManager.getAgentId())});
49+
}
4650
// add to method pool
4751
event.source = false;
4852
event.traceId = traceId;

0 commit comments

Comments
 (0)