use of com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScopeInvocation in project pinpoint by naver.
the class TProtocolReadFieldBeginInterceptor method after.
@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
if (isDebug) {
logger.afterInterceptor(target, args, result, throwable);
}
if (!validate(target)) {
return;
}
final boolean shouldTrace = ((ServerMarkerFlagFieldAccessor) target)._$PINPOINT$_getServerMarkerFlag();
if (shouldTrace) {
InterceptorScopeInvocation currentTransaction = this.scope.getCurrentInvocation();
Object attachment = currentTransaction.getAttachment();
if (attachment instanceof ThriftClientCallContext) {
ThriftClientCallContext clientCallContext = (ThriftClientCallContext) attachment;
if (result instanceof TField) {
handleClientRequest((TField) result, clientCallContext);
}
}
}
}
use of com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScopeInvocation in project pinpoint by naver.
the class TProtocolReadMessageBeginInterceptor method after.
@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
if (isDebug) {
logger.afterInterceptor(target, args, result, throwable);
}
if (!validate(target)) {
return;
}
final boolean shouldTrace = ((AsyncMarkerFlagFieldAccessor) target)._$PINPOINT$_getAsyncMarkerFlag();
if (shouldTrace) {
String methodName = ThriftConstants.UNKNOWN_METHOD_NAME;
if (result instanceof TMessage) {
TMessage message = (TMessage) result;
methodName = message.name;
}
ThriftClientCallContext clientCallContext = new ThriftClientCallContext(methodName);
InterceptorScopeInvocation currentTransaction = this.scope.getCurrentInvocation();
currentTransaction.setAttachment(clientCallContext);
}
}
use of com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScopeInvocation in project pinpoint by naver.
the class JedisMethodInterceptor method doInAfterTrace.
@Override
public void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) {
String endPoint = null;
if (target instanceof EndPointAccessor) {
endPoint = ((EndPointAccessor) target)._$PINPOINT$_getEndPoint();
}
final InterceptorScopeInvocation invocation = interceptorScope.getCurrentInvocation();
if (invocation != null && invocation.getAttachment() != null && invocation.getAttachment() instanceof CommandContext) {
final CommandContext commandContext = (CommandContext) invocation.getAttachment();
logger.debug("Check command context {}", commandContext);
if (io) {
final StringBuilder sb = new StringBuilder();
sb.append("write=").append(commandContext.getWriteElapsedTime());
if (commandContext.isWriteFail()) {
sb.append("(fail)");
}
sb.append(", read=").append(commandContext.getReadElapsedTime());
if (commandContext.isReadFail()) {
sb.append("(fail)");
}
recorder.recordAttribute(AnnotationKey.ARGS0, sb.toString());
}
// clear
invocation.removeAttachment();
}
recorder.recordApi(getMethodDescriptor());
recorder.recordEndPoint(endPoint != null ? endPoint : "Unknown");
recorder.recordDestinationId(RedisConstants.REDIS.getName());
recorder.recordServiceType(RedisConstants.REDIS);
recorder.recordException(throwable);
}
use of com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScopeInvocation in project pinpoint by naver.
the class ProtocolSendCommandAndReadMethodInterceptor method after.
@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
if (isDebug) {
logger.afterInterceptor(target, methodDescriptor.getClassName(), methodDescriptor.getMethodName(), "", args, result, throwable);
}
final Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
}
try {
final InterceptorScopeInvocation invocation = interceptorScope.getCurrentInvocation();
if (invocation != null && invocation.getAttachment() != null && invocation.getAttachment() instanceof CommandContext) {
final CommandContext commandContext = (CommandContext) invocation.getAttachment();
if (methodDescriptor.getMethodName().equals("sendCommand")) {
commandContext.setWriteEndTime(System.currentTimeMillis());
commandContext.setWriteFail(throwable != null);
} else {
commandContext.setReadEndTime(System.currentTimeMillis());
commandContext.setReadFail(throwable != null);
}
logger.debug("Set command context {}", commandContext);
}
} catch (Throwable t) {
logger.warn("Failed to AFTER process. {}", t.getMessage(), t);
}
}
use of com.navercorp.pinpoint.bootstrap.interceptor.scope.InterceptorScopeInvocation in project pinpoint by naver.
the class TProtocolReadTTypeInterceptor method after.
@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
if (isDebug) {
logger.afterInterceptor(target, args, result, throwable);
}
if (!validate(target)) {
return;
}
final boolean shouldTrace = ((ServerMarkerFlagFieldAccessor) target)._$PINPOINT$_getServerMarkerFlag();
if (shouldTrace) {
InterceptorScopeInvocation currentTransaction = this.scope.getCurrentInvocation();
Object attachment = currentTransaction.getAttachment();
if (attachment instanceof ThriftClientCallContext) {
ThriftClientCallContext clientCallContext = (ThriftClientCallContext) attachment;
ThriftHeader headerKeyToBeRead = clientCallContext.getTraceHeaderToBeRead();
if (headerKeyToBeRead == NONE) {
return;
}
ThriftRequestProperty parentTraceInfo = clientCallContext.getTraceHeader();
if (parentTraceInfo == null) {
parentTraceInfo = new ThriftRequestProperty();
clientCallContext.setTraceHeader(parentTraceInfo);
}
try {
parentTraceInfo.setTraceHeader(headerKeyToBeRead, result);
} catch (Throwable t) {
logger.warn("Error reading trace header.", t);
} finally {
clientCallContext.setTraceHeaderToBeRead(NONE);
}
}
}
}
Aggregations