Skip to content

Commit

Permalink
[#9575] Polishing
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed Jan 6, 2023
1 parent dc60c05 commit f0fdbce
Show file tree
Hide file tree
Showing 12 changed files with 95 additions and 245 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import com.navercorp.pinpoint.bootstrap.context.TraceId;
import com.navercorp.pinpoint.bootstrap.context.scope.TraceScope;
import com.navercorp.pinpoint.common.annotations.VisibleForTesting;
import com.navercorp.pinpoint.common.util.Assert;
import com.navercorp.pinpoint.exception.PinpointException;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.context.recorder.WrappedSpanEventRecorder;
Expand Down Expand Up @@ -53,13 +52,12 @@ public class AsyncChildTrace implements Trace {
private final TraceRoot traceRoot;
private final LocalAsyncId localAsyncId;

public AsyncChildTrace(final TraceRoot traceRoot, CallStack<SpanEvent> callStack, Storage storage, boolean sampling,
SpanRecorder spanRecorder, WrappedSpanEventRecorder wrappedSpanEventRecorder, final LocalAsyncId localAsyncId) {
public AsyncChildTrace(final TraceRoot traceRoot, CallStack<SpanEvent> callStack, Storage storage,
SpanRecorder spanRecorder, WrappedSpanEventRecorder wrappedSpanEventRecorder, final LocalAsyncId localAsyncId) {

this.traceRoot = Objects.requireNonNull(traceRoot, "traceRoot");
this.callStack = Objects.requireNonNull(callStack, "callStack");
this.storage = Objects.requireNonNull(storage, "storage");
Assert.isTrue(sampling, "sampling must be true");

this.spanRecorder = Objects.requireNonNull(spanRecorder, "spanRecorder");
this.wrappedSpanEventRecorder = Objects.requireNonNull(wrappedSpanEventRecorder, "wrappedSpanEventRecorder");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.navercorp.pinpoint.profiler.context;

import com.navercorp.pinpoint.bootstrap.context.AsyncState;
import com.navercorp.pinpoint.bootstrap.context.SpanRecorder;
import com.navercorp.pinpoint.profiler.context.recorder.WrappedSpanEventRecorder;
import com.navercorp.pinpoint.profiler.context.storage.Storage;

import java.util.Objects;

public class AsyncDefaultTrace extends DefaultTrace {
private final AsyncState asyncState;

public AsyncDefaultTrace(Span span,
CallStack<SpanEvent> callStack,
Storage storage,
SpanRecorder spanRecorder,
WrappedSpanEventRecorder wrappedSpanEventRecorder,
AsyncState asyncState) {
super(span, callStack, storage, spanRecorder, wrappedSpanEventRecorder, null, null);
this.asyncState = Objects.requireNonNull(asyncState, "asyncState");
}

@Override
public void close() {
if (asyncState.await()) {
// flush.
super.flush();
if (isDebug) {
logger.debug("Flush trace={}, asyncState={}", this, this.asyncState);
}
} else {
// close.
super.close();
if (isDebug) {
logger.debug("Close trace={}. asyncState={}", this, this.asyncState);
}
}
}

@Override
public String toString() {
return "AsyncDefaultTrace{" +
"asyncState=" + asyncState +
"} " + super.toString();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -84,19 +84,18 @@ public Trace continueTraceObject(final TraceId traceId) {
// TODO need to consider as a target to sample in case Trace object has a sampling flag (true) marked on previous node.
// Check max throughput(permits per seconds)
final TraceSampler.State state = traceSampler.isContinueSampled();
final boolean sampling = state.isSampled();
if (sampling) {
if (state.isSampled()) {
final TraceRoot traceRoot = traceRootFactory.continueTraceRoot(traceId, state.nextId());
final Span span = spanFactory.newSpan(traceRoot);
final SpanChunkFactory spanChunkFactory = new DefaultSpanChunkFactory(traceRoot);
final Storage storage = storageFactory.createStorage(spanChunkFactory);
final CallStack<SpanEvent> callStack = callStackFactory.newCallStack();

final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span, traceId.isRoot(), sampling);
final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span);
final WrappedSpanEventRecorder wrappedSpanEventRecorder = recorderFactory.newWrappedSpanEventRecorder(traceRoot);
final ActiveTraceHandle handle = registerActiveTrace(traceRoot);

return new DefaultTrace(span, callStack, storage, sampling, spanRecorder,
return new DefaultTrace(span, callStack, storage, spanRecorder,
wrappedSpanEventRecorder, handle, uriStatStorage);
} else {
return newLocalTrace(state.nextId());
Expand Down Expand Up @@ -125,21 +124,19 @@ public Trace newTraceObject(String urlPath) {
}

Trace newTraceObject(TraceSampler.State state) {
final boolean sampling = state.isSampled();
if (sampling) {
if (state.isSampled()) {
final TraceRoot traceRoot = traceRootFactory.newTraceRoot(state.nextId());
final Span span = spanFactory.newSpan(traceRoot);
final SpanChunkFactory spanChunkFactory = new DefaultSpanChunkFactory(traceRoot);
final Storage storage = storageFactory.createStorage(spanChunkFactory);
final CallStack<SpanEvent> callStack = callStackFactory.newCallStack();

final TraceId traceId = traceRoot.getTraceId();
final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span, traceId.isRoot(), sampling);
final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span);
final WrappedSpanEventRecorder wrappedSpanEventRecorder = recorderFactory.newWrappedSpanEventRecorder(traceRoot);

final ActiveTraceHandle handle = registerActiveTrace(traceRoot);

return new DefaultTrace(span, callStack, storage, sampling, spanRecorder, wrappedSpanEventRecorder,
return new DefaultTrace(span, callStack, storage, spanRecorder, wrappedSpanEventRecorder,
handle, uriStatStorage);
} else {
return newLocalTrace(state.nextId());
Expand All @@ -155,11 +152,11 @@ public Trace continueAsyncContextTraceObject(TraceRoot traceRoot, LocalAsyncId l

final CallStack<SpanEvent> callStack = callStackFactory.newCallStack();

final SpanRecorder spanRecorder = recorderFactory.newTraceRootSpanRecorder(traceRoot, sampling);
final SpanRecorder spanRecorder = recorderFactory.newTraceRootSpanRecorder(traceRoot);

final WrappedSpanEventRecorder wrappedSpanEventRecorder = recorderFactory.newWrappedSpanEventRecorder(traceRoot);

return new AsyncChildTrace(traceRoot, callStack, storage, sampling, spanRecorder, wrappedSpanEventRecorder, localAsyncId);
return new AsyncChildTrace(traceRoot, callStack, storage, spanRecorder, wrappedSpanEventRecorder, localAsyncId);
} else {
return new DisableAsyncChildTrace(traceRoot, localAsyncId);
}
Expand All @@ -171,8 +168,7 @@ public Trace continueAsyncContextTraceObject(TraceRoot traceRoot, LocalAsyncId l
@Override
public Trace continueAsyncTraceObject(final TraceId traceId) {
final TraceSampler.State state = traceSampler.isContinueSampled();
final boolean sampling = state.isSampled();
if (sampling) {
if (state.isSampled()) {
final TraceRoot traceRoot = traceRootFactory.continueTraceRoot(traceId, state.nextId());
final Span span = spanFactory.newSpan(traceRoot);

Expand All @@ -184,13 +180,10 @@ public Trace continueAsyncTraceObject(final TraceId traceId) {
final SpanAsyncStateListener asyncStateListener = new SpanAsyncStateListener(span, storageFactory);
final AsyncState asyncState = new ListenableAsyncState(traceRoot, asyncStateListener, handle, uriStatStorage);

final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span, traceId.isRoot(), sampling);
final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span);
final WrappedSpanEventRecorder wrappedSpanEventRecorder = recorderFactory.newWrappedSpanEventRecorder(traceRoot, asyncState);


final DefaultTrace trace = new DefaultTrace(span, callStack, storage, sampling, spanRecorder, wrappedSpanEventRecorder);

return new AsyncTrace(traceRoot, trace, asyncState);
return new AsyncDefaultTrace(span, callStack, storage, spanRecorder, wrappedSpanEventRecorder, asyncState);
} else {
return newLocalTrace(state.nextId());
}
Expand All @@ -211,8 +204,7 @@ public Trace newAsyncTraceObject(String urlPath) {
}

Trace newAsyncTraceObject(TraceSampler.State state) {
final boolean sampling = state.isSampled();
if (sampling) {
if (state.isSampled()) {
final TraceRoot traceRoot = traceRootFactory.newTraceRoot(state.nextId());
final Span span = spanFactory.newSpan(traceRoot);
final SpanChunkFactory spanChunkFactory = new DefaultSpanChunkFactory(traceRoot);
Expand All @@ -223,15 +215,10 @@ Trace newAsyncTraceObject(TraceSampler.State state) {
final SpanAsyncStateListener asyncStateListener = new SpanAsyncStateListener(span, storageFactory);
final AsyncState asyncState = new ListenableAsyncState(traceRoot, asyncStateListener, handle, uriStatStorage);


final TraceId traceId = traceRoot.getTraceId();
final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span, traceId.isRoot(), sampling);
final SpanRecorder spanRecorder = recorderFactory.newSpanRecorder(span);
final WrappedSpanEventRecorder wrappedSpanEventRecorder = recorderFactory.newWrappedSpanEventRecorder(traceRoot, asyncState);


final DefaultTrace trace = new DefaultTrace(span, callStack, storage, sampling, spanRecorder, wrappedSpanEventRecorder);

return new AsyncTrace(traceRoot, trace, asyncState);
return new AsyncDefaultTrace(span, callStack, storage, spanRecorder, wrappedSpanEventRecorder, asyncState);
} else {
return newLocalTrace(state.nextId());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import com.navercorp.pinpoint.bootstrap.context.TraceId;
import com.navercorp.pinpoint.bootstrap.context.scope.TraceScope;
import com.navercorp.pinpoint.common.annotations.VisibleForTesting;
import com.navercorp.pinpoint.common.util.Assert;
import com.navercorp.pinpoint.exception.PinpointException;
import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHandle;
import com.navercorp.pinpoint.profiler.context.id.Shared;
Expand All @@ -42,10 +41,10 @@
* @author emeroad
* @author jaehong.kim
*/
public final class DefaultTrace implements Trace {
public class DefaultTrace implements Trace {

private static final Logger logger = LogManager.getLogger(DefaultTrace.class.getName());
private static final boolean isDebug = logger.isDebugEnabled();
static final Logger logger = LogManager.getLogger(DefaultTrace.class.getName());
static final boolean isDebug = logger.isDebugEnabled();

private final CallStack<SpanEvent> callStack;

Expand All @@ -64,20 +63,19 @@ public final class DefaultTrace implements Trace {
@Nullable
private final UriStatStorage uriStatStorage;

public DefaultTrace(Span span, CallStack<SpanEvent> callStack, Storage storage, boolean sampling,
public DefaultTrace(Span span, CallStack<SpanEvent> callStack, Storage storage,
SpanRecorder spanRecorder, WrappedSpanEventRecorder wrappedSpanEventRecorder) {
this(span, callStack, storage, sampling, spanRecorder, wrappedSpanEventRecorder, null, null);
this(span, callStack, storage, spanRecorder, wrappedSpanEventRecorder, null, null);
}

public DefaultTrace(Span span, CallStack<SpanEvent> callStack, Storage storage, boolean sampling,
public DefaultTrace(Span span, CallStack<SpanEvent> callStack, Storage storage,
SpanRecorder spanRecorder, WrappedSpanEventRecorder wrappedSpanEventRecorder,
ActiveTraceHandle activeTraceHandle,
UriStatStorage uriStatStorage) {

this.span = Objects.requireNonNull(span, "span");
this.callStack = Objects.requireNonNull(callStack, "callStack");
this.storage = Objects.requireNonNull(storage, "storage");
Assert.isTrue(sampling, "sampling must be true");

this.spanRecorder = Objects.requireNonNull(spanRecorder, "spanRecorder");
this.wrappedSpanEventRecorder = Objects.requireNonNull(wrappedSpanEventRecorder, "wrappedSpanEventRecorder");
Expand Down
Loading

0 comments on commit f0fdbce

Please # to comment.