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()));