Skip to content

Commit

Permalink
[pinpoint-apm#9584] Add LocalTraceRoot for DisableTrace
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed Jan 2, 2023
1 parent bb2f9de commit 7c4e429
Show file tree
Hide file tree
Showing 13 changed files with 95 additions and 108 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHandle;
import com.navercorp.pinpoint.profiler.context.active.ActiveTraceRepository;
import com.navercorp.pinpoint.profiler.context.id.ListenableAsyncState;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRootFactory;
import com.navercorp.pinpoint.profiler.context.recorder.RecorderFactory;
Expand Down Expand Up @@ -244,7 +245,7 @@ public Trace disableSampling() {
}

private Trace newLocalTrace(long nextDisabledId) {
final TraceRoot traceRoot = traceRootFactory.newDisableTraceRoot(nextDisabledId);
final LocalTraceRoot traceRoot = traceRootFactory.newDisableTraceRoot(nextDisabledId);
final SpanRecorder spanRecorder = recorderFactory.newDisableSpanRecorder(traceRoot);
final long traceStartTime = traceRoot.getTraceStartTime();
final long threadId = Thread.currentThread().getId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.bootstrap.context.TraceId;
import com.navercorp.pinpoint.bootstrap.context.scope.TraceScope;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.scope.DefaultTraceScopePool;

import java.util.Objects;
Expand All @@ -33,10 +33,10 @@ public class DisableAsyncChildTrace implements Trace {

private DefaultTraceScopePool scopePool;

private final TraceRoot traceRoot;
private final LocalTraceRoot traceRoot;
private final LocalAsyncId localAsyncId;

public DisableAsyncChildTrace(final TraceRoot traceRoot, final LocalAsyncId localAsyncId) {
public DisableAsyncChildTrace(final LocalTraceRoot traceRoot, final LocalAsyncId localAsyncId) {
this.traceRoot = Objects.requireNonNull(traceRoot, "traceRoot");
this.localAsyncId = Objects.requireNonNull(localAsyncId, "localAsyncId");
}
Expand Down Expand Up @@ -71,7 +71,7 @@ public int getCallStackFrameId() {
return 0;
}

private TraceRoot getTraceRoot() {
private LocalTraceRoot getTraceRoot() {
return this.traceRoot;
}

Expand All @@ -87,7 +87,7 @@ public long getStartTime() {

@Override
public TraceId getTraceId() {
return getTraceRoot().getTraceId();
throw new UnsupportedOperationException(UNSUPPORTED_OPERATION);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
import com.navercorp.pinpoint.bootstrap.context.TraceId;
import com.navercorp.pinpoint.bootstrap.context.scope.TraceScope;
import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHandle;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.Shared;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.context.scope.DefaultTraceScopePool;
import com.navercorp.pinpoint.profiler.context.storage.UriStatStorage;

Expand All @@ -39,15 +39,15 @@ public class DisableTrace implements Trace {
public static final String UNSUPPORTED_OPERATION = "disable trace";
public static final long DISABLE_TRACE_OBJECT_ID = -1;

private final TraceRoot traceRoot;
private final LocalTraceRoot traceRoot;
private final SpanRecorder spanRecorder;
private DefaultTraceScopePool scopePool;
private final ActiveTraceHandle handle;
private final UriStatStorage uriStatStorage;

private boolean closed = false;

public DisableTrace(TraceRoot traceRoot, SpanRecorder spanRecorder, ActiveTraceHandle handle, UriStatStorage uriStatStorage) {
public DisableTrace(LocalTraceRoot traceRoot, SpanRecorder spanRecorder, ActiveTraceHandle handle, UriStatStorage uriStatStorage) {
this.traceRoot = Objects.requireNonNull(traceRoot, "traceRoot");
this.spanRecorder = Objects.requireNonNull(spanRecorder, "spanRecorder");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public TraceRoot newTraceRoot(long transactionId) {


@Override
public TraceRoot newDisableTraceRoot(long transactionId) {
public LocalTraceRoot newDisableTraceRoot(long transactionId) {
final long startTime = traceStartTime();
return TraceRoot.local(agentId, startTime, transactionId);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,56 +1,13 @@
package com.navercorp.pinpoint.profiler.context.id;

import com.navercorp.pinpoint.bootstrap.context.TraceId;

import java.util.Objects;

/**
* @author Woonduk Kang(emeroad)
*/
public class LocalTraceRoot implements TraceRoot {

private final String agentId;
private final long localTransactionId;

private final long traceStartTime;

private final Shared shared = new DefaultShared();


public LocalTraceRoot(String agentId, long traceStartTime, long localTransactionId) {
this.agentId = Objects.requireNonNull(agentId, "agentId");
this.traceStartTime = traceStartTime;
this.localTransactionId = localTransactionId;
}

@Override
public TraceId getTraceId() {
return null;
}

@Override
public long getLocalTransactionId() {
return localTransactionId;
}


@Override
public long getTraceStartTime() {
return traceStartTime;
}

public interface LocalTraceRoot {

@Override
public Shared getShared() {
return shared;
}
long getLocalTransactionId();

long getTraceStartTime();

@Override
public String toString() {
return "DisableTraceRoot{" +
", agentId='" + agentId + '\'' +
", traceStartTime=" + traceStartTime +
'}';
}
Shared getShared();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.navercorp.pinpoint.profiler.context.id;

import java.util.Objects;

/**
* @author Woonduk Kang(emeroad)
*/
public class LocalTraceRootImpl implements LocalTraceRoot {

protected final String agentId;
protected final long localTransactionId;

protected final long traceStartTime;

protected final Shared shared = new DefaultShared();


LocalTraceRootImpl(String agentId, long traceStartTime, long localTransactionId) {
this.agentId = Objects.requireNonNull(agentId, "agentId");
this.traceStartTime = traceStartTime;
this.localTransactionId = localTransactionId;
}

public String getAgentId() {
return agentId;
}

@Override
public long getLocalTransactionId() {
return localTransactionId;
}

@Override
public long getTraceStartTime() {
return traceStartTime;
}


@Override
public Shared getShared() {
return shared;
}


@Override
public String toString() {
return "DefaultLocalTraceRoot{" +
", agentId='" + agentId + '\'' +
", traceStartTime=" + traceStartTime +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,56 +23,27 @@
/**
* @author Woonduk Kang(emeroad)
*/
public class RemoteTraceRoot implements TraceRoot {
public class RemoteTraceRootImpl extends LocalTraceRootImpl implements TraceRoot {

private final TraceId traceId;
private final String agentId;
private final long localTransactionId;

private final long traceStartTime;

private final Shared shared = new DefaultShared();

RemoteTraceRoot(TraceId traceId, String agentId, long traceStartTime, long localTransactionId) {
RemoteTraceRootImpl(TraceId traceId, String agentId, long traceStartTime, long localTransactionId) {
super(agentId, traceStartTime, localTransactionId);
this.traceId = Objects.requireNonNull(traceId, "traceId");
this.agentId = Objects.requireNonNull(agentId, "agentId");
this.traceStartTime = traceStartTime;
this.localTransactionId = localTransactionId;
}

@Override
public TraceId getTraceId() {
return traceId;
}

@Override
public long getLocalTransactionId() {
return localTransactionId;
}


@Override
public long getTraceStartTime() {
return traceStartTime;
}




@Override
public Shared getShared() {
return shared;
}




@Override
public String toString() {
return "DefaultTraceRoot{" +
return "DefaultRemoteTraceRoot{" +
"traceId=" + traceId +
", agentId='" + agentId + '\'' +
", traceStartTime=" + traceStartTime +
'}';
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,25 @@
/**
* @author Woonduk Kang(emeroad)
*/
public interface TraceRoot {
public interface TraceRoot extends LocalTraceRoot {

TraceId getTraceId();

@Override
long getLocalTransactionId();

@Override
long getTraceStartTime();

@Override
Shared getShared();

static TraceRoot remote(TraceId traceId, String agentId, long traceStartTime, long localTransactionId) {
return new RemoteTraceRoot(traceId, agentId, traceStartTime, localTransactionId);
return new RemoteTraceRootImpl(traceId, agentId, traceStartTime, localTransactionId);
}

static TraceRoot local(String agentId, long traceStartTime, long localTransactionId) {
static LocalTraceRoot local(String agentId, long traceStartTime, long localTransactionId) {
Objects.requireNonNull(agentId, "agentId");
return new LocalTraceRoot(agentId, traceStartTime, localTransactionId);
return new LocalTraceRootImpl(agentId, traceStartTime, localTransactionId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public interface TraceRootFactory {

TraceRoot newTraceRoot(long transactionId);

TraceRoot newDisableTraceRoot(long transactionId);
LocalTraceRoot newDisableTraceRoot(long transactionId);

TraceRoot continueTraceRoot(TraceId traceId, long transactionId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.navercorp.pinpoint.profiler.context.AsyncContextFactory;
import com.navercorp.pinpoint.profiler.context.Span;
import com.navercorp.pinpoint.profiler.context.errorhandler.IgnoreErrorHandler;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.metadata.SqlMetaDataService;
import com.navercorp.pinpoint.profiler.metadata.StringMetaDataService;
Expand Down Expand Up @@ -59,7 +60,7 @@ public SpanRecorder newTraceRootSpanRecorder(TraceRoot traceRoot, boolean sampli
}

@Override
public SpanRecorder newDisableSpanRecorder(TraceRoot traceRoot) {
public SpanRecorder newDisableSpanRecorder(LocalTraceRoot traceRoot) {
return new DisableSpanRecorder(traceRoot, errorHandler);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,19 @@
import com.navercorp.pinpoint.common.trace.ServiceType;
import com.navercorp.pinpoint.common.util.DataType;
import com.navercorp.pinpoint.profiler.context.errorhandler.IgnoreErrorHandler;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.Shared;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;

import java.util.Objects;

/**
* @author Woonduk Kang(emeroad)
*/
public class DisableSpanRecorder implements SpanRecorder {
private final TraceRoot traceRoot;
private final LocalTraceRoot traceRoot;
private final IgnoreErrorHandler ignoreErrorHandler;

public DisableSpanRecorder(TraceRoot traceRoot, IgnoreErrorHandler ignoreErrorHandler) {
public DisableSpanRecorder(LocalTraceRoot traceRoot, IgnoreErrorHandler ignoreErrorHandler) {
this.traceRoot = Objects.requireNonNull(traceRoot, "traceRoot");
this.ignoreErrorHandler = Objects.requireNonNull(ignoreErrorHandler, "ignoreErrorHandler");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.navercorp.pinpoint.bootstrap.context.AsyncState;
import com.navercorp.pinpoint.bootstrap.context.SpanRecorder;
import com.navercorp.pinpoint.profiler.context.Span;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;

/**
Expand All @@ -30,7 +31,7 @@ public interface RecorderFactory {

SpanRecorder newTraceRootSpanRecorder(TraceRoot traceRoot, boolean sampling);

SpanRecorder newDisableSpanRecorder(TraceRoot traceRoot);
SpanRecorder newDisableSpanRecorder(LocalTraceRoot traceRoot);

WrappedSpanEventRecorder newWrappedSpanEventRecorder(TraceRoot traceRoot);

Expand Down
Loading

0 comments on commit 7c4e429

Please sign in to comment.