package com.navercorp.pinpoint.plugin.hystrix.interceptor; import com.navercorp.pinpoint.bootstrap.context.AsyncTraceId; import com.navercorp.pinpoint.bootstrap.context.MethodDescriptor; import com.navercorp.pinpoint.bootstrap.context.SpanEventRecorder; import com.navercorp.pinpoint.bootstrap.context.TraceContext; import com.navercorp.pinpoint.bootstrap.interceptor.SpanAsyncEventSimpleAroundInterceptor; import com.navercorp.pinpoint.bootstrap.interceptor.annotation.Scope; import com.navercorp.pinpoint.bootstrap.logging.PLogger; import com.navercorp.pinpoint.bootstrap.logging.PLoggerFactory; import com.navercorp.pinpoint.plugin.hystrix.HystrixPluginConstants; /** * for hystrix-core 1.3 * @author Jiaqi Feng */ @Scope(HystrixPluginConstants.HYSTRIX_COMMAND_EXECUTION_SCOPE) public class HystrixCommandExecuteCommandInterceptor extends SpanAsyncEventSimpleAroundInterceptor { protected final PLogger logger = PLoggerFactory.getLogger(getClass()); protected final boolean isDebug = logger.isDebugEnabled(); public HystrixCommandExecuteCommandInterceptor(TraceContext traceContext, MethodDescriptor methodDescriptor) { super(traceContext, methodDescriptor); } @Override protected void doInBeforeTrace(SpanEventRecorder recorder, AsyncTraceId asyncTraceId, Object target, Object[] args) { if (isDebug) { logger.debug("HystrixCommandExecuteCommandInterceptor.doInBeforeTrace()"); } } @Override protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) { if (isDebug) { logger.debug("HystrixCommandExecuteCommandInterceptor.doInAfterTrace()"); } recorder.recordServiceType(HystrixPluginConstants.HYSTRIX_INTERNAL_SERVICE_TYPE); recorder.recordApi(methodDescriptor); recorder.recordException(throwable); } }