diff --git a/src/main/java/com/profiler/context/Trace.java b/src/main/java/com/profiler/context/Trace.java index 67bf152da..54a4fc2f5 100644 --- a/src/main/java/com/profiler/context/Trace.java +++ b/src/main/java/com/profiler/context/Trace.java @@ -108,22 +108,24 @@ public final class Trace { return id; } - public static boolean removeTraceId() { - // TraceID traceId = traceIdLocal.get(); + public static boolean removeCurrentTraceIdFromStack() { TraceIDStack stack = traceIdLocal.get(); TraceID traceId = null; - if (stack != null) + + if (stack != null) { traceId = stack.getTraceId(); + } else { + // TODO : remove this log. + System.out.println("#############################################################"); + System.out.println("# Something's going wrong. Stack is not exists. #"); + System.out.println("#############################################################"); + + stack = new TraceIDStack(); + traceIdLocal.set(stack); + } if (traceId != null) { - // traceIdLocal.remove(); - - if (stack == null) { - traceIdLocal.set(new TraceIDStack()); - } - - traceIdLocal.get().clear(); - + stack.clear(); spanMap.remove(traceId); return true; } @@ -193,7 +195,8 @@ public final class Trace { Span span = spanMap.update(traceId, spanUpdater); if (span.isExistsAnnotationType(Annotation.ClientRecv.getCode()) || span.isExistsAnnotationType(Annotation.ServerSend.getCode())) { - spanMap.remove(traceId); + // remove current context threadId from stack + removeCurrentTraceIdFromStack(); logSpan(span); } } diff --git a/src/main/java/com/profiler/modifier/tomcat/interceptors/InvokeMethodInterceptor.java b/src/main/java/com/profiler/modifier/tomcat/interceptors/InvokeMethodInterceptor.java index 235a8d9c5..520c42760 100644 --- a/src/main/java/com/profiler/modifier/tomcat/interceptors/InvokeMethodInterceptor.java +++ b/src/main/java/com/profiler/modifier/tomcat/interceptors/InvokeMethodInterceptor.java @@ -55,7 +55,8 @@ public class InvokeMethodInterceptor implements StaticAroundInterceptor { Trace.record(Annotation.ServerSend, StopWatch.stopAndGetElapsed("InvokeMethodInterceptor-starttime")); RequestTracer.endTransaction(); - Trace.removeTraceId(); + // TODO: I'v changed point of removing. Trace.mutate() + // Trace.removeTraceId(); } /** diff --git a/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java b/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java index 08d31d8a0..30b7c8d50 100644 --- a/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java +++ b/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java @@ -64,7 +64,7 @@ public class MySQLConnectionImplModifierTest { Assert.assertEquals(connectionList.size(), 0); logger.info("connection size:" + connectionList.size()); - Trace.removeTraceId(); + Trace.removeCurrentTraceIdFromStack(); } }