diff --git a/src/main/java/com/profiler/modifier/connector/interceptors/ExecuteMethodInterceptor.java b/src/main/java/com/profiler/modifier/connector/interceptors/ExecuteMethodInterceptor.java index 2e647af9f..b17201159 100644 --- a/src/main/java/com/profiler/modifier/connector/interceptors/ExecuteMethodInterceptor.java +++ b/src/main/java/com/profiler/modifier/connector/interceptors/ExecuteMethodInterceptor.java @@ -12,50 +12,50 @@ import com.profiler.interceptor.StaticAroundInterceptor; /** * Method interceptor - * + *
** org.apache.http.impl.client.AbstractHttpClient. * public*/ public class ExecuteMethodInterceptor implements StaticAroundInterceptor { - @Override - public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) { - final HttpHost host = (HttpHost) args[0]; - final HttpRequest request = (HttpRequest) args[1]; + @Override + public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) { + final HttpHost host = (HttpHost) args[0]; + final HttpRequest request = (HttpRequest) args[1]; - try { - Trace.traceBlockBegin(); - TraceID nextId = Trace.getNextTraceId(); + try { + Trace.traceBlockBegin(); + TraceID nextId = Trace.getNextTraceId(); - // UUID format을 그대로. - request.addHeader(Header.HTTP_TRACE_ID.toString(), nextId.getId().toString()); - request.addHeader(Header.HTTP_SPAN_ID.toString(), Long.toString(nextId.getSpanId())); - request.addHeader(Header.HTTP_PARENT_SPAN_ID.toString(), Long.toString(nextId.getParentSpanId())); - request.addHeader(Header.HTTP_SAMPLED.toString(), String.valueOf(nextId.isSampled())); - request.addHeader(Header.HTTP_FLAGS.toString(), String.valueOf(nextId.getFlags())); + // UUID format을 그대로. + request.addHeader(Header.HTTP_TRACE_ID.toString(), nextId.getId().toString()); + request.addHeader(Header.HTTP_SPAN_ID.toString(), Long.toString(nextId.getSpanId())); + request.addHeader(Header.HTTP_PARENT_SPAN_ID.toString(), Long.toString(nextId.getParentSpanId())); + request.addHeader(Header.HTTP_SAMPLED.toString(), String.valueOf(nextId.isSampled())); + request.addHeader(Header.HTTP_FLAGS.toString(), String.valueOf(nextId.getFlags())); - Trace.recordRpcName(request.getProtocolVersion().toString(), "CLIENT"); - Trace.recordEndPoint(request.getProtocolVersion().toString() + ":" + host.getHostName() + ":" + host.getPort()); - Trace.recordAttibute("http.url", request.getRequestLine().getUri()); - Trace.record(Annotation.ClientSend); - } finally { - Trace.traceBlockEnd(); - } + Trace.recordRpcName(request.getProtocolVersion().toString(), "CLIENT"); + Trace.recordEndPoint(request.getProtocolVersion().toString() + ":" + host.getHostName() + ":" + host.getPort()); + Trace.recordAttibute("http.url", request.getRequestLine().getUri()); + Trace.record(Annotation.ClientSend); + } finally { + Trace.traceBlockEnd(); + } - StopWatch.start("ExecuteMethodInterceptor"); - } + StopWatch.start("ExecuteMethodInterceptor"); + } - @Override - public void after(Object target, String className, String methodName, String parameterDescription, Object[] args, Object result) { - Trace.traceBlockBegin(); - Trace.record(Annotation.ClientRecv, StopWatch.stopAndGetElapsed("ExecuteMethodInterceptor")); - Trace.traceBlockEnd(); - } + @Override + public void after(Object target, String className, String methodName, String parameterDescription, Object[] args, Object result) { + Trace.traceBlockBegin(); + Trace.record(Annotation.ClientRecv, StopWatch.stopAndGetElapsed("ExecuteMethodInterceptor")); + Trace.traceBlockEnd(); + } } \ No newline at end of file diff --git a/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java index f94cc2c96..0691668d3 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java @@ -20,6 +20,10 @@ public class ConnectionCloseInterceptor implements StaticBeforeInterceptor { if (logger.isLoggable(Level.INFO)) { logger.info("before " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args)); } + if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); + return; + } // close의 경우 호출이 실패하더라도 데이터를 삭제해야함. if (target instanceof Connection) { this.setUrl.invoke(target, new Object[]{null}); diff --git a/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCreateInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCreateInterceptor.java index bb09a0dc1..1a56b927d 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCreateInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCreateInterceptor.java @@ -10,6 +10,7 @@ import com.profiler.util.InterceptorUtils; import com.profiler.util.MetaObject; import com.profiler.util.StringUtils; +@Deprecated public class ConnectionCreateInterceptor implements StaticAfterInterceptor { private final Logger logger = Logger.getLogger(ConnectionCreateInterceptor.class.getName()); diff --git a/src/main/java/com/profiler/modifier/db/interceptor/DriverInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/DriverConnectInterceptor.java similarity index 93% rename from src/main/java/com/profiler/modifier/db/interceptor/DriverInterceptor.java rename to src/main/java/com/profiler/modifier/db/interceptor/DriverConnectInterceptor.java index 6bf816ab6..be811394b 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/DriverInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/DriverConnectInterceptor.java @@ -14,7 +14,7 @@ import java.util.logging.Logger; /** * */ -public class DriverInterceptor implements StaticAroundInterceptor { +public class DriverConnectInterceptor implements StaticAroundInterceptor { private final Logger logger = Logger.getLogger(ConnectionCreateInterceptor.class.getName()); private final MetaObject setUrl = new MetaObject("__setUrl", String.class); diff --git a/src/main/java/com/profiler/modifier/db/interceptor/JDBCScope.java b/src/main/java/com/profiler/modifier/db/interceptor/JDBCScope.java index c791d7074..d51ee9323 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/JDBCScope.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/JDBCScope.java @@ -14,15 +14,15 @@ public class JDBCScope { }; public static void pushScope() { - scope.set(true); + scope.set(Boolean.TRUE); } public static boolean isInternal() { - return scope.get(); + return scope.get() != null; } public static void popScope() { - scope.set(false); + scope.set(null); } } diff --git a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementBindVariableInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementBindVariableInterceptor.java index 426bc500a..558dc3def 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementBindVariableInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementBindVariableInterceptor.java @@ -23,6 +23,10 @@ public class PreparedStatementBindVariableInterceptor implements StaticAfterInte if (logger.isLoggable(Level.INFO)) { logger.info("after " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args) + " result:" + result); } + if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); + return; + } if (Trace.getCurrentTraceId() == null) { return; } diff --git a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementCreateInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementCreateInterceptor.java index ccf9bc20e..38d115ace 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementCreateInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementCreateInterceptor.java @@ -25,6 +25,10 @@ public class PreparedStatementCreateInterceptor implements StaticAfterIntercepto if (logger.isLoggable(Level.INFO)) { logger.info("after " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args) + " result:" + result); } + if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); + return; + } if (!InterceptorUtils.isSuccess(result)) { return; } diff --git a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementExecuteQueryInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementExecuteQueryInterceptor.java index 95abb7fde..9655acea1 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementExecuteQueryInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementExecuteQueryInterceptor.java @@ -30,6 +30,7 @@ public class PreparedStatementExecuteQueryInterceptor implements StaticAroundInt logger.info("before " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args)); } if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); return; } if (Trace.getCurrentTraceId() == null) { diff --git a/src/main/java/com/profiler/modifier/db/interceptor/StatementCreateInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/StatementCreateInterceptor.java index 0cc77cfd5..ea25ad22b 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/StatementCreateInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/StatementCreateInterceptor.java @@ -25,6 +25,10 @@ public class StatementCreateInterceptor implements StaticAfterInterceptor { if (logger.isLoggable(Level.INFO)) { logger.info("after " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args) + " result:" + result); } + if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); + return; + } if (!InterceptorUtils.isSuccess(result)) { return; } diff --git a/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java index 25f5d366e..f676843a3 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java @@ -26,9 +26,8 @@ public class StatementExecuteQueryInterceptor implements StaticAroundInterceptor if (logger.isLoggable(Level.INFO)) { logger.info("before " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args)); } - new Exception("executeQuery").printStackTrace(); - ; if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); return; } if (Trace.getCurrentTraceId() == null) { diff --git a/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteUpdateInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteUpdateInterceptor.java index d00a97bda..4234977ed 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteUpdateInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteUpdateInterceptor.java @@ -28,6 +28,7 @@ public class StatementExecuteUpdateInterceptor implements StaticAroundIntercepto logger.info("before " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args)); } if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); return; } if (Trace.getCurrentTraceId() == null) { diff --git a/src/main/java/com/profiler/modifier/db/interceptor/TransactionInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/TransactionInterceptor.java index e8468ad4d..4386358f7 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/TransactionInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/TransactionInterceptor.java @@ -24,6 +24,7 @@ public class TransactionInterceptor implements StaticAroundInterceptor { logger.info("before " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args)); } if (JDBCScope.isInternal()) { + logger.info("internal jdbc scope. skip trace"); return; } if (Trace.getCurrentTraceId() == null) { diff --git a/src/main/java/com/profiler/modifier/db/mysql/MySQLNonRegisteringDriverModifier.java b/src/main/java/com/profiler/modifier/db/mysql/MySQLNonRegisteringDriverModifier.java index acd5cd984..29549b1da 100644 --- a/src/main/java/com/profiler/modifier/db/mysql/MySQLNonRegisteringDriverModifier.java +++ b/src/main/java/com/profiler/modifier/db/mysql/MySQLNonRegisteringDriverModifier.java @@ -1,6 +1,5 @@ package com.profiler.modifier.db.mysql; -import com.mysql.jdbc.NonRegisteringDriver; import com.profiler.interceptor.Interceptor; import com.profiler.interceptor.bci.ByteCodeInstrumentor; import com.profiler.interceptor.bci.InstrumentClass; @@ -36,7 +35,7 @@ public class MySQLNonRegisteringDriverModifier extends AbstractModifier { InstrumentClass mysqlConnection = byteCodeInstrumentor.getClass(javassistClassName); - Interceptor createConnection = new DriverInterceptor(); + Interceptor createConnection = new DriverConnectInterceptor(); String[] params = new String[]{ "java.lang.String", "java.util.Properties" };T execute( - * final HttpHost target, + * final HttpHost target, * final HttpRequest request, - * final ResponseHandler extends T> responseHandler, - * final HttpContext context) + * final ResponseHandler extends T> responseHandler, + * final HttpContext context) * throws IOException, ClientProtocolException { *