From 5b696442d5f24efcf81b1cea5230bf373bf14cd2 Mon Sep 17 00:00:00 2001 From: Woonduk Kang Date: Tue, 23 Apr 2013 02:10:56 +0000 Subject: [PATCH] =?UTF-8?q?[=EA=B0=95=EC=9A=B4=EB=8D=95]=20[LUCYSUS-1744]?= =?UTF-8?q?=20sampling=20=EC=9C=A8=EC=97=90=20=EB=94=B0=EB=9D=BC=20connect?= =?UTF-8?q?or=EA=B0=80=20sampling=20flag=EB=A5=BC=20=EC=A0=84=EB=8B=AC?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-tomcat-profiler/trunk@1525 84d0f5b1-2673-498c-a247-62c4ff18d310 --- .../Execute2MethodInterceptor.java | 28 ++++++++++++------- .../interceptor/ExecuteMethodInterceptor.java | 28 ++++++++++++------- .../interceptor/ConnectMethodInterceptor.java | 24 ++++++++++------ 3 files changed, 52 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java index e3519898f..04518759f 100644 --- a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java +++ b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java @@ -6,6 +6,7 @@ import com.profiler.logging.Logger; import com.profiler.context.*; import com.profiler.interceptor.TraceContextSupport; import com.profiler.logging.LoggerFactory; +import com.profiler.sampler.util.SamplingFlagUtils; import org.apache.http.HttpHost; import org.apache.http.client.methods.HttpUriRequest; @@ -14,7 +15,6 @@ import com.profiler.common.ServiceType; import com.profiler.interceptor.ByteCodeMethodDescriptorSupport; import com.profiler.interceptor.MethodDescriptor; import com.profiler.interceptor.StaticAroundInterceptor; -import com.profiler.logging.LoggingUtils; /** * Method interceptor @@ -39,10 +39,22 @@ public class Execute2MethodInterceptor implements StaticAroundInterceptor, ByteC if (isDebug) { logger.beforeInterceptor(target, className, methodName, parameterDescription, args); } - Trace trace = traceContext.currentTraceObject(); - if (trace == null) { - return; - } + + Trace trace = traceContext.currentRawTraceObject(); + if (trace == null) { + return; + } + + final HttpUriRequest request = (HttpUriRequest) args[0]; + // UUID format을 그대로. + final boolean sampling = trace.canSampled(); + if (!sampling) { + if(isDebug) { + logger.debug("set Samplingflag= "); + } + request.addHeader(Header.HTTP_SAMPLED.toString(), SamplingFlagUtils.SAMPLING_RATE_FALSE); + return; + } trace.traceBlockBegin(); trace.markBeforeTime(); @@ -50,14 +62,10 @@ public class Execute2MethodInterceptor implements StaticAroundInterceptor, ByteC TraceID nextId = trace.getTraceId().getNextTraceId(); trace.recordNextSpanId(nextId.getSpanId()); - - final HttpUriRequest request = (HttpUriRequest) args[0]; - // UUID format을 그대로. - request.addHeader(Header.HTTP_TRACE_ID.toString(), nextId.getId().toString()); request.addHeader(Header.HTTP_SPAN_ID.toString(), Integer.toString(nextId.getSpanId())); request.addHeader(Header.HTTP_PARENT_SPAN_ID.toString(), Integer.toString(nextId.getParentSpanId())); - request.addHeader(Header.HTTP_SAMPLED.toString(), String.valueOf(nextId.isSampled())); + request.addHeader(Header.HTTP_FLAGS.toString(), String.valueOf(nextId.getFlags())); request.addHeader(Header.HTTP_PARENT_APPLICATION_NAME.toString(), traceContext.getApplicationId()); request.addHeader(Header.HTTP_PARENT_APPLICATION_TYPE.toString(), String.valueOf(ServiceType.TOMCAT.getCode())); diff --git a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java index b8cc97634..c8ef93c2e 100644 --- a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java +++ b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java @@ -6,6 +6,7 @@ import com.profiler.common.AnnotationKey; import com.profiler.context.*; import com.profiler.interceptor.TraceContextSupport; import com.profiler.logging.LoggerFactory; +import com.profiler.sampler.util.SamplingFlagUtils; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; @@ -13,7 +14,6 @@ import com.profiler.common.ServiceType; import com.profiler.interceptor.ByteCodeMethodDescriptorSupport; import com.profiler.interceptor.MethodDescriptor; import com.profiler.interceptor.StaticAroundInterceptor; -import com.profiler.logging.LoggingUtils; /** * Method interceptor @@ -42,33 +42,42 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo if (isDebug) { logger.beforeInterceptor(target, className, methodName, parameterDescription, args); } - Trace trace = traceContext.currentTraceObject(); + Trace trace = traceContext.currentRawTraceObject(); if (trace == null) { return; } + + final HttpRequest request = (HttpRequest) args[1]; + final boolean sampling = trace.canSampled(); + if (!sampling) { + request.addHeader(Header.HTTP_SAMPLED.toString(), SamplingFlagUtils.SAMPLING_RATE_FALSE); + return; + } + trace.traceBlockBegin(); trace.markBeforeTime(); TraceID nextId = trace.getTraceId().getNextTraceId(); trace.recordNextSpanId(nextId.getSpanId()); - + final HttpHost host = (HttpHost) args[0]; - final HttpRequest request = (HttpRequest) args[1]; + // UUID format을 그대로. request.addHeader(Header.HTTP_TRACE_ID.toString(), nextId.getId().toString()); request.addHeader(Header.HTTP_SPAN_ID.toString(), Integer.toString(nextId.getSpanId())); request.addHeader(Header.HTTP_PARENT_SPAN_ID.toString(), Integer.toString(nextId.getParentSpanId())); - request.addHeader(Header.HTTP_SAMPLED.toString(), String.valueOf(nextId.isSampled())); + request.addHeader(Header.HTTP_FLAGS.toString(), String.valueOf(nextId.getFlags())); - request.addHeader(Header.HTTP_PARENT_APPLICATION_NAME.toString(), traceContext.getApplicationId()); - request.addHeader(Header.HTTP_PARENT_APPLICATION_TYPE.toString(), String.valueOf(ServiceType.TOMCAT.getCode())); + request.addHeader(Header.HTTP_PARENT_APPLICATION_NAME.toString(), traceContext.getApplicationId()); + request.addHeader(Header.HTTP_PARENT_APPLICATION_TYPE.toString(), String.valueOf(ServiceType.TOMCAT.getCode())); trace.recordServiceType(ServiceType.HTTP_CLIENT); - int port = host.getPort(); + int port = host.getPort(); trace.recordDestinationId(host.getHostName() + ((port > 0) ? ":" + port : "")); - trace.recordAttribute(AnnotationKey.HTTP_URL, request.getRequestLine().getUri()); + trace.recordAttribute(AnnotationKey.HTTP_URL, request.getRequestLine().getUri()); + } @Override @@ -83,7 +92,6 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo return; } trace.recordApi(descriptor); -// trace.recordApi(this.apiId); trace.recordException(result); trace.markAfterTime(); diff --git a/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java b/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java index 6e7c057d6..4b707f8b3 100644 --- a/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java +++ b/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java @@ -11,7 +11,7 @@ import com.profiler.interceptor.MethodDescriptor; import com.profiler.interceptor.StaticAroundInterceptor; import com.profiler.interceptor.TraceContextSupport; import com.profiler.logging.LoggerFactory; -import com.profiler.logging.LoggingUtils; +import com.profiler.sampler.util.SamplingFlagUtils; /** * @author netspider @@ -30,23 +30,31 @@ public class ConnectMethodInterceptor implements StaticAroundInterceptor, ByteCo if (isDebug) { logger.beforeInterceptor(target, className, methodName, parameterDescription, args); } - Trace trace = traceContext.currentTraceObject(); - if (trace == null) { - return; - } + Trace trace = traceContext.currentRawTraceObject(); + if (trace == null) { + return; + } + + HttpURLConnection request = (HttpURLConnection) target; + // UUID format을 그대로. + final boolean sampling = trace.canSampled(); + if (!sampling) { + request.addRequestProperty(Header.HTTP_SAMPLED.toString(), SamplingFlagUtils.SAMPLING_RATE_FALSE); + return; + } + + trace.traceBlockBegin(); trace.markBeforeTime(); TraceID nextId = trace.getTraceId().getNextTraceId(); trace.recordNextSpanId(nextId.getSpanId()); - HttpURLConnection request = (HttpURLConnection) target; - // UUID format을 그대로. request.setRequestProperty(Header.HTTP_TRACE_ID.toString(), nextId.getId().toString()); request.setRequestProperty(Header.HTTP_SPAN_ID.toString(), Integer.toString(nextId.getSpanId())); request.setRequestProperty(Header.HTTP_PARENT_SPAN_ID.toString(), Integer.toString(nextId.getParentSpanId())); - request.setRequestProperty(Header.HTTP_SAMPLED.toString(), String.valueOf(nextId.isSampled())); + request.setRequestProperty(Header.HTTP_FLAGS.toString(), String.valueOf(nextId.getFlags())); request.setRequestProperty(Header.HTTP_PARENT_APPLICATION_NAME.toString(), traceContext.getApplicationId()); request.setRequestProperty(Header.HTTP_PARENT_APPLICATION_TYPE.toString(), String.valueOf(ServiceType.TOMCAT.getCode()));