Skip to content

Commit

Permalink
apply SpanRecorder/SpanEventRecorder
Browse files Browse the repository at this point in the history
  • Loading branch information
jaehong-kim committed Jul 6, 2015
1 parent fe7e11d commit 08dc37b
Show file tree
Hide file tree
Showing 65 changed files with 390 additions and 3,458 deletions.
@@ -1,4 +1,4 @@
package com.navercorp.pinpoint.profiler.context;
package com.navercorp.pinpoint.bootstrap.context;

import com.navercorp.pinpoint.bootstrap.interceptor.MethodDescriptor;
import com.navercorp.pinpoint.common.trace.AnnotationKey;
Expand Down
@@ -1,11 +1,15 @@
package com.navercorp.pinpoint.profiler.context;
package com.navercorp.pinpoint.bootstrap.context;

import com.navercorp.pinpoint.bootstrap.interceptor.MethodDescriptor;
import com.navercorp.pinpoint.common.trace.AnnotationKey;
import com.navercorp.pinpoint.common.trace.ServiceType;

public interface SpanRecorder {

boolean canSampled();

boolean isRoot();

void markBeforeTime();

void markAfterTime();
Expand Down
Expand Up @@ -20,18 +20,19 @@
* @author emeroad
*/
public interface StackOperation {

public static final int DEFAULT_STACKID = -1;

public static final int ROOT_STACKID = 0;

void traceBlockBegin();
SpanEventRecorder traceBlockBegin();

void traceBlockBegin(int stackId);
SpanEventRecorder traceBlockBegin(int stackId);

void traceBlockEnd();

void traceBlockEnd(int stackId);

boolean isRootStack();

int getStackFrameId();

}
}
Expand Up @@ -31,8 +31,11 @@ public interface Trace extends StackOperation {

boolean isAsync();

long getTraceStartTime();

long getTraceStartTime();

SpanRecorder getSpanRecorder();

SpanEventRecorder getSpanEventRecorder();

void close();
}
}
Expand Up @@ -16,6 +16,7 @@

package com.navercorp.pinpoint.bootstrap.interceptor;

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.logging.PLogger;
Expand Down Expand Up @@ -57,10 +58,9 @@ public void before(Object target, Object[] args) {
return;
}

trace.traceBlockBegin();
trace.markBeforeTime();

trace.recordServiceType(serviceType);
final SpanEventRecorder recorder = trace.traceBlockBegin();
recorder.markBeforeTime();
recorder.recordServiceType(serviceType);
}

@Override
Expand All @@ -75,12 +75,12 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
}

try {
trace.recordApi(descriptor);
trace.recordException(throwable);

trace.markAfterTime();
final SpanEventRecorder recorder = trace.getSpanEventRecorder();
recorder.recordApi(descriptor);
recorder.recordException(throwable);
recorder.markAfterTime();
} finally {
trace.traceBlockEnd();
}
}
}
}
Expand Up @@ -2,6 +2,7 @@

import com.navercorp.pinpoint.bootstrap.MetadataAccessor;
import com.navercorp.pinpoint.bootstrap.context.AsyncTraceId;
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.SimpleAroundInterceptor;
Expand Down Expand Up @@ -48,13 +49,13 @@ public void before(Object target, Object[] args) {
if(isDebug) {
logger.debug("Continue async trace. {}", asyncTraceId);
}

traceFirstBlockBegin(trace);
}

try {
trace.traceBlockBegin();
doInBeforeTrace(trace, asyncTraceId, target, args);
final SpanEventRecorder recorder = trace.traceBlockBegin();
doInBeforeTrace(recorder, asyncTraceId, target, args);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("before. Caused:{}", th.getMessage(), th);
Expand All @@ -64,17 +65,14 @@ public void before(Object target, Object[] args) {

private void traceFirstBlockBegin(final Trace trace) {
// first block
trace.markBeforeTime();
trace.recordServiceType(ServiceType.ASYNC);
trace.recordApi(asyncMethodDescriptor);
final SpanEventRecorder recorder = trace.getSpanEventRecorder();
recorder.markBeforeTime();
recorder.recordServiceType(ServiceType.ASYNC);
recorder.recordApi(asyncMethodDescriptor);
}

private void traceFirstBlockEnd(final Trace trace) {
// first block
trace.markAfterTime();
}

protected abstract void doInBeforeTrace(Trace trace, AsyncTraceId asyncTraceId, Object target, Object[] args);
protected abstract void doInBeforeTrace(SpanEventRecorder recorder, AsyncTraceId asyncTraceId, Object target, Object[] args);

@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
Expand All @@ -93,7 +91,8 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
}

try {
doInAfterTrace(trace, target, args, result, throwable);
final SpanEventRecorder recorder = trace.getSpanEventRecorder();
doInAfterTrace(recorder, target, args, result, throwable);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("after error. Caused:{}", th.getMessage(), th);
Expand All @@ -112,7 +111,13 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
}
}

protected abstract void doInAfterTrace(Trace trace, Object target, Object[] args, Object result, Throwable throwable);
private void traceFirstBlockEnd(final Trace trace) {
// first block
final SpanEventRecorder recorder = trace.getSpanEventRecorder();
recorder.markAfterTime();
}

protected abstract void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable);

public class AsyncMethodDescriptor implements MethodDescriptor {

Expand Down
Expand Up @@ -16,14 +16,15 @@

package com.navercorp.pinpoint.bootstrap.interceptor;

import com.navercorp.pinpoint.bootstrap.context.RecordableTrace;
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.logging.PLogger;
import com.navercorp.pinpoint.bootstrap.logging.PLoggerFactory;

/**
* @author emeroad
* @author jaehong.kim
*/
public abstract class SpanEventSimpleAroundInterceptor implements SimpleAroundInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
protected final PLogger logger;
Expand All @@ -50,9 +51,10 @@ public void before(Object target, Object[] args) {
if (trace == null) {
return;
}

try {
trace.traceBlockBegin();
doInBeforeTrace(trace, target, args);
final SpanEventRecorder recorder = trace.traceBlockBegin();
doInBeforeTrace(recorder, target, args);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("before. Caused:{}", th.getMessage(), th);
Expand All @@ -68,7 +70,7 @@ protected void prepareBeforeTrace(Object target, Object[] args) {

}

protected abstract void doInBeforeTrace(final RecordableTrace trace, final Object target, final Object[] args);
protected abstract void doInBeforeTrace(final SpanEventRecorder recorder, final Object target, final Object[] args);


@Override
Expand All @@ -83,8 +85,10 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
if (trace == null) {
return;
}

try {
doInAfterTrace(trace, target, args, result, throwable);
final SpanEventRecorder recorder = trace.getSpanEventRecorder();
doInAfterTrace(recorder, target, args, result, throwable);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("after error. Caused:{}", th.getMessage(), th);
Expand All @@ -99,10 +103,9 @@ protected void logAfterInterceptor(Object target, Object[] args, Object result,
}

protected void prepareAfterTrace(Object target, Object[] args, Object result, Throwable throwable) {

}

protected abstract void doInAfterTrace(final RecordableTrace trace, final Object target, final Object[] args, final Object result, Throwable throwable);
protected abstract void doInAfterTrace(final SpanEventRecorder recorder, final Object target, final Object[] args, final Object result, Throwable throwable);


@Override
Expand All @@ -123,4 +126,4 @@ public void setTraceContext(TraceContext traceContext) {
public TraceContext getTraceContext() {
return traceContext;
}
}
}
Expand Up @@ -16,14 +16,15 @@

package com.navercorp.pinpoint.bootstrap.interceptor;

import com.navercorp.pinpoint.bootstrap.context.RecordableTrace;
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.logging.PLogger;
import com.navercorp.pinpoint.bootstrap.logging.PLoggerFactory;

/**
* @author emeroad
* @author jaehong.kim
*/
public abstract class SpanEventSimpleAroundInterceptorForPlugin implements SimpleAroundInterceptor {
protected final PLogger logger = PLoggerFactory.getLogger(getClass());
Expand All @@ -49,9 +50,10 @@ public void before(Object target, Object[] args) {
if (trace == null) {
return;
}

try {
trace.traceBlockBegin();
doInBeforeTrace(trace, target, args);
final SpanEventRecorder recorder = trace.traceBlockBegin();
doInBeforeTrace(recorder, target, args);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("before. Caused:{}", th.getMessage(), th);
Expand All @@ -67,8 +69,7 @@ protected void prepareBeforeTrace(Object target, Object[] args) {

}

protected abstract void doInBeforeTrace(final RecordableTrace trace, final Object target, final Object[] args);

protected abstract void doInBeforeTrace(final SpanEventRecorder recorder, final Object target, final Object[] args);

@Override
public void after(Object target, Object[] args, Object result, Throwable throwable) {
Expand All @@ -83,7 +84,8 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
return;
}
try {
doInAfterTrace(trace, target, args, result, throwable);
final SpanEventRecorder recorder = trace.getSpanEventRecorder();
doInAfterTrace(recorder, target, args, result, throwable);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("after error. Caused:{}", th.getMessage(), th);
Expand All @@ -98,10 +100,9 @@ protected void logAfterInterceptor(Object target, Object[] args, Object result,
}

protected void prepareAfterTrace(Object target, Object[] args, Object result, Throwable throwable) {

}

protected abstract void doInAfterTrace(final RecordableTrace trace, final Object target, final Object[] args, final Object result, Throwable throwable);
protected abstract void doInAfterTrace(final SpanEventRecorder recorder, final Object target, final Object[] args, final Object result, Throwable throwable);

protected MethodDescriptor getMethodDescriptor() {
return methodDescriptor;
Expand All @@ -110,4 +111,4 @@ protected MethodDescriptor getMethodDescriptor() {
protected TraceContext getTraceContext() {
return traceContext;
}
}
}
Expand Up @@ -16,7 +16,7 @@

package com.navercorp.pinpoint.bootstrap.interceptor;

import com.navercorp.pinpoint.bootstrap.context.RecordableTrace;
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.logging.PLogger;
Expand Down Expand Up @@ -55,15 +55,16 @@ public void before(Object target, Object[] args) {
return;
}
// ------------------------------------------------------
doInBeforeTrace(trace, target, args);
final SpanRecorder recorder = trace.getSpanRecorder();
doInBeforeTrace(recorder, target, args);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("before. Caused:{}", th.getMessage(), th);
}
}
}

protected abstract void doInBeforeTrace(final RecordableTrace trace, Object target, final Object[] args);
protected abstract void doInBeforeTrace(final SpanRecorder recorder, Object target, final Object[] args);

protected abstract Trace createTrace(final Object target, final Object[] args);

Expand All @@ -85,7 +86,8 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
}
// ------------------------------------------------------
try {
doInAfterTrace(trace, target, args, result, throwable);
final SpanRecorder recorder = trace.getSpanRecorder();
doInAfterTrace(recorder, target, args, result, throwable);
} catch (Throwable th) {
if (logger.isWarnEnabled()) {
logger.warn("after. Caused:{}", th.getMessage(), th);
Expand All @@ -96,7 +98,7 @@ public void after(Object target, Object[] args, Object result, Throwable throwab
}
}

protected abstract void doInAfterTrace(final RecordableTrace trace, final Object target, final Object[] args, final Object result, Throwable throwable);
protected abstract void doInAfterTrace(final SpanRecorder recorder, final Object target, final Object[] args, final Object result, Throwable throwable);

protected void deleteTrace(final Trace trace, final Object target, final Object[] args, final Object result, Throwable throwable) {
trace.close();
Expand Down

0 comments on commit 08dc37b

Please sign in to comment.