Skip to content

Commit

Permalink
[pinpoint-apm#9595] Improve accuracy of statistics of non-sampling in…
Browse files Browse the repository at this point in the history
… server plugins
  • Loading branch information
emeroad committed Feb 24, 2023
1 parent f5e20db commit e9b6f54
Show file tree
Hide file tree
Showing 12 changed files with 68 additions and 26 deletions.
Expand Up @@ -49,7 +49,7 @@ public void before(Object target, Object[] args) {

prepareBeforeTrace(target, args);

final Trace trace = traceContext.currentTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
Expand All @@ -64,6 +64,10 @@ public void before(Object target, Object[] args) {
}
}

protected Trace currentTrace() {
return traceContext.currentTraceObject();
}

protected void logBeforeInterceptor(Object target, Object[] args) {
logger.beforeInterceptor(target, args);
}
Expand All @@ -82,7 +86,7 @@ public void after(Object target, Object[] args, Object result, Throwable throwab

prepareAfterTrace(target, args, result, throwable);

final Trace trace = traceContext.currentTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
Expand Down
Expand Up @@ -54,7 +54,7 @@ public ServerStreamCreatedInterceptor(TraceContext traceContext, MethodDescripto

final RequestAdaptor<GrpcServerStreamRequest> requestAdaptor = new GrpcServerStreamRequestAdaptor();
this.serverRequestRecorder = new ServerRequestRecorder<>(requestAdaptor);
this.requestTraceReader = new RequestTraceReader(traceContext, requestAdaptor, true);
this.requestTraceReader = new RequestTraceReader<>(traceContext, requestAdaptor, true);

traceContext.cacheApi(GRPC_SERVER_CALL_METHOD_DESCRIPTOR);
}
Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor;
import com.navercorp.pinpoint.bootstrap.context.SpanEventRecorder;
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
import com.navercorp.pinpoint.bootstrap.interceptor.SpanEventSimpleAroundInterceptorForPlugin;
import com.navercorp.pinpoint.plugin.jboss.JbossAsyncListener;
Expand All @@ -40,6 +41,11 @@ public RequestStartAsyncInterceptor(TraceContext context, MethodDescriptor descr
protected void doInBeforeTrace(SpanEventRecorder recorder, Object target, Object[] args) {
}

@Override
protected Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) {
if (validate(target, result, throwable)) {
Expand Down
Expand Up @@ -34,11 +34,11 @@
* @author jaehong.kim
*/
public class RequestStartAsyncInterceptor implements AroundInterceptor {
private PLogger logger = PLoggerFactory.getLogger(this.getClass());
private boolean isDebug = logger.isDebugEnabled();
private final PLogger logger = PLoggerFactory.getLogger(this.getClass());
private final boolean isDebug = logger.isDebugEnabled();

private TraceContext traceContext;
private MethodDescriptor descriptor;
private final TraceContext traceContext;
private final MethodDescriptor descriptor;

public RequestStartAsyncInterceptor(TraceContext traceContext, MethodDescriptor descriptor) {
this.traceContext = traceContext;
Expand All @@ -51,20 +51,24 @@ public void before(Object target, Object[] args) {
logger.beforeInterceptor(target, args);
}

final Trace trace = traceContext.currentTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
trace.traceBlockBegin();
}

private Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
if (isDebug) {
logger.afterInterceptor(target, args, result, throwable);
}

final Trace trace = traceContext.currentTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
Expand Down
Expand Up @@ -23,14 +23,12 @@
import com.navercorp.pinpoint.bootstrap.context.AsyncContextUtils;
import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor;
import com.navercorp.pinpoint.bootstrap.context.SpanEventRecorder;
import com.navercorp.pinpoint.bootstrap.context.SpanRecorder;
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
import com.navercorp.pinpoint.bootstrap.interceptor.AroundInterceptor;
import com.navercorp.pinpoint.bootstrap.logging.PLogger;
import com.navercorp.pinpoint.bootstrap.logging.PLoggerFactory;
import com.navercorp.pinpoint.bootstrap.plugin.RequestRecorderFactory;
import com.navercorp.pinpoint.bootstrap.plugin.http.HttpStatusCodeRecorder;
import com.navercorp.pinpoint.bootstrap.plugin.request.RequestAdaptor;
import com.navercorp.pinpoint.bootstrap.plugin.request.ServerCookieRecorder;
import com.navercorp.pinpoint.bootstrap.plugin.request.ServerHeaderRecorder;
Expand All @@ -52,7 +50,6 @@
public abstract class AbstractHttpServerHandleInterceptor implements AroundInterceptor {
private final PLogger logger = PLoggerFactory.getLogger(this.getClass());
private final boolean isDebug = logger.isDebugEnabled();
private final boolean isInfo = logger.isInfoEnabled();
private final TraceContext traceContext;
private final MethodDescriptor methodDescriptor;
private final boolean enableAsyncEndPoint;
Expand Down Expand Up @@ -103,9 +100,7 @@ public void before(Object target, Object[] args) {
closed(args);
}
} catch (Throwable t) {
if (isInfo) {
logger.info("Failed to servlet request event handle.", t);
}
logger.info("Failed to servlet request event handle.", t);
}
}

Expand All @@ -131,8 +126,7 @@ private void received(final Object[] args) {
final SpanEventRecorder recorder = trace.currentSpanEventRecorder();
if (recorder != null) {
// make asynchronous trace-id
final boolean asyncStateSupport = enableAsyncEndPoint;
final AsyncContext asyncContext = recorder.recordNextAsyncContext(asyncStateSupport);
final AsyncContext asyncContext = recorder.recordNextAsyncContext(enableAsyncEndPoint);
((AsyncContextAccessor) args[0])._$PINPOINT$_setAsyncContext(asyncContext);
if (isDebug) {
logger.debug("Set asyncContext to args[0]. asyncContext={}", asyncContext);
Expand Down Expand Up @@ -160,9 +154,7 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
received(args, throwable);
}
} catch (Throwable t) {
if (isInfo) {
logger.info("Failed to servlet request event handle.", t);
}
logger.info("Failed to servlet request event handle.", t);
}
}

Expand Down
Expand Up @@ -2,6 +2,7 @@

import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor;
import com.navercorp.pinpoint.bootstrap.context.SpanEventRecorder;
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
import com.navercorp.pinpoint.bootstrap.interceptor.SpanEventSimpleAroundInterceptorForPlugin;
import com.navercorp.pinpoint.plugin.resin.ResinAsyncListener;
Expand All @@ -25,6 +26,11 @@ public HttpServletRequestImplInterceptor(TraceContext context, MethodDescriptor
protected void doInBeforeTrace(SpanEventRecorder recorder, Object target, Object[] args) {
}

@Override
protected Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) {
if (validate(target, result, throwable)) {
Expand Down
Expand Up @@ -48,20 +48,24 @@ public void before(Object target, Object[] args) {
logger.beforeInterceptor(target, args);
}

final Trace trace = traceContext.currentRawTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
trace.traceBlockBegin();
}

private Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
if (isDebug) {
logger.afterInterceptor(target, args, result, throwable);
}

final Trace trace = traceContext.currentRawTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
Expand Down
Expand Up @@ -49,20 +49,24 @@ public void before(Object target, Object[] args) {
logger.beforeInterceptor(target, args);
}

final Trace trace = traceContext.currentRawTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
trace.traceBlockBegin();
}

private Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
if (isDebug) {
logger.afterInterceptor(target, args, result, throwable);
}

final Trace trace = traceContext.currentRawTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor;
import com.navercorp.pinpoint.bootstrap.context.SpanEventRecorder;
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
import com.navercorp.pinpoint.bootstrap.interceptor.SpanEventSimpleAroundInterceptorForPlugin;
import com.navercorp.pinpoint.plugin.undertowservlet.UndertowAsyncListener;
Expand All @@ -40,6 +41,11 @@ public HttpServletRequestImplStartAsyncInterceptor(TraceContext context, MethodD
protected void doInBeforeTrace(SpanEventRecorder recorder, Object target, Object[] args) {
}

@Override
protected Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) {
if (validate(target, result, throwable)) {
Expand Down
Expand Up @@ -99,7 +99,7 @@ public void before(Object target, Object[] args) {
logger.beforeInterceptor(target, args);
}

if (traceContext.currentRawTraceObject() != null) {
if (currentTrace() != null) {
// duplicate trace.
return;
}
Expand Down Expand Up @@ -148,6 +148,10 @@ public void before(Object target, Object[] args) {
}
}

private Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

private boolean validate(final Object[] args) {
if (ArrayUtils.isEmpty(args)) {
if (isDebug) {
Expand Down Expand Up @@ -181,7 +185,7 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
logger.afterInterceptor(target, args, result, throwable);
}

final Trace trace = traceContext.currentRawTraceObject();
final Trace trace = currentTrace();
if (trace == null) {
return;
}
Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor;
import com.navercorp.pinpoint.bootstrap.context.SpanEventRecorder;
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
import com.navercorp.pinpoint.bootstrap.interceptor.SpanEventSimpleAroundInterceptorForPlugin;
import com.navercorp.pinpoint.plugin.weblogic.WeblogicAsyncListener;
Expand All @@ -40,6 +41,11 @@ public ServletRequestImplStartAsyncInterceptor(TraceContext context, MethodDescr
protected void doInBeforeTrace(SpanEventRecorder recorder, Object target, Object[] args) {
}

@Override
protected Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) {
if (validate(target, result, throwable)) {
Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor;
import com.navercorp.pinpoint.bootstrap.context.SpanEventRecorder;
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
import com.navercorp.pinpoint.bootstrap.interceptor.SpanEventSimpleAroundInterceptorForPlugin;
import com.navercorp.pinpoint.plugin.websphere.WebsphereAsyncListener;
Expand All @@ -40,6 +41,11 @@ public WCCRequestImplStartAsyncInterceptor(TraceContext context, MethodDescripto
protected void doInBeforeTrace(SpanEventRecorder recorder, Object target, Object[] args) {
}

@Override
protected Trace currentTrace() {
return traceContext.currentRawTraceObject();
}

@Override
protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) {
if (validate(target, result, throwable)) {
Expand Down

0 comments on commit e9b6f54

Please sign in to comment.