Skip to content

Commit

Permalink
[#9595] Refactor ActiveThreadDump
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed Jan 21, 2023
1 parent 07dec1a commit 08572d8
Show file tree
Hide file tree
Showing 13 changed files with 86 additions and 188 deletions.
Expand Up @@ -105,8 +105,8 @@ private ActiveTraceHandle registerActiveTrace(TraceRoot traceRoot) {
return activeTraceRepository.register(traceRoot);
}

private ActiveTraceHandle registerActiveTrace(long localTransactionId, long startTime, long threadId) {
return activeTraceRepository.register(localTransactionId, startTime, threadId);
private ActiveTraceHandle registerActiveTrace(LocalTraceRoot localTraceRoot) {
return activeTraceRepository.register(localTraceRoot);
}

@Override
Expand Down Expand Up @@ -232,9 +232,7 @@ public Trace disableSampling() {
private Trace newLocalTrace(long nextDisabledId) {
final LocalTraceRoot traceRoot = traceRootFactory.newDisableTraceRoot(nextDisabledId);
final SpanRecorder spanRecorder = recorderFactory.newDisableSpanRecorder(traceRoot);
final long traceStartTime = traceRoot.getTraceStartTime();
final long threadId = Thread.currentThread().getId();
final ActiveTraceHandle activeTraceHandle = registerActiveTrace(nextDisabledId, traceStartTime, threadId);
final ActiveTraceHandle activeTraceHandle = registerActiveTrace(traceRoot);
return new DisableTrace(traceRoot, spanRecorder, activeTraceHandle, uriStatStorage);
}
}
Expand Up @@ -53,6 +53,13 @@ public DisableTrace(LocalTraceRoot traceRoot, SpanRecorder spanRecorder, ActiveT

this.handle = Objects.requireNonNull(handle, "handle");
this.uriStatStorage = Objects.requireNonNull(uriStatStorage, "uriStatStorage");

setCurrentThread();
}

private void setCurrentThread() {
final long threadId = Thread.currentThread().getId();
getShared().setThreadId(threadId);
}

@Override
Expand Down
Expand Up @@ -16,6 +16,7 @@

package com.navercorp.pinpoint.profiler.context.active;

import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;

import java.util.List;
Expand All @@ -33,6 +34,6 @@ public interface ActiveTraceRepository {

ActiveTraceHandle register(TraceRoot traceRoot);

ActiveTraceHandle register(long localTransactionId, long startTime, long threadId);
ActiveTraceHandle register(LocalTraceRoot traceRoot);

}
Expand Up @@ -17,18 +17,18 @@
package com.navercorp.pinpoint.profiler.context.active;


import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;

import java.util.Objects;

/**
* @author HyunGil Jeong
*/
public class SampledActiveTrace implements ActiveTrace {
public class DefaultActiveTrace implements ActiveTrace {

private final TraceRoot traceRoot;
private final LocalTraceRoot traceRoot;

public SampledActiveTrace(TraceRoot traceRoot) {
public DefaultActiveTrace(LocalTraceRoot traceRoot) {
this.traceRoot = Objects.requireNonNull(traceRoot, "trace");
}

Expand All @@ -45,7 +45,7 @@ public long getId() {

@Override
public ActiveTraceSnapshot snapshot() {
return new SampledActiveTraceSnapshot(traceRoot);
return DefaultActiveTraceSnapshot.of(traceRoot);
}

@Override
Expand Down
Expand Up @@ -15,15 +15,17 @@
*/

package com.navercorp.pinpoint.profiler.context.active;

import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.navercorp.pinpoint.common.trace.BaseHistogramSchema;
import com.navercorp.pinpoint.common.trace.HistogramSchema;
import com.navercorp.pinpoint.common.trace.HistogramSlot;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeCollector;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -83,24 +85,17 @@ private void remove(ActiveTraceHandle key, long purgeTime) {

@Override
public ActiveTraceHandle register(TraceRoot traceRoot) {
final ActiveTrace activeTrace = newSampledActiveTrace(traceRoot);
final ActiveTrace activeTrace = new DefaultActiveTrace(traceRoot);
return register0(activeTrace);
}

private ActiveTrace newSampledActiveTrace(TraceRoot traceRoot) {
return new SampledActiveTrace(traceRoot);
}

@Override
public ActiveTraceHandle register(long localTransactionId, long startTime, long threadId) {
final ActiveTrace activeTrace = newUnsampledActiveTrace(localTransactionId, startTime, threadId);
public ActiveTraceHandle register(LocalTraceRoot localTraceRoot) {
final ActiveTrace activeTrace = new DefaultActiveTrace(localTraceRoot);
return register0(activeTrace);
}

private ActiveTrace newUnsampledActiveTrace(long localTransactionId, long startTime, long threadId) {
return new UnsampledActiveTrace(localTransactionId, startTime, threadId);
}

private ActiveTraceHandle register0(ActiveTrace activeTrace) {
if (isDebug) {
logger.debug("register ActiveTrace key:{}", activeTrace);
Expand Down
Expand Up @@ -16,20 +16,24 @@

package com.navercorp.pinpoint.profiler.context.active;

import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;

import java.util.Objects;

/**
* @author Taejin Koo
*/
public class SampledActiveTraceSnapshot implements ActiveTraceSnapshot {
public class DefaultActiveTraceSnapshot implements ActiveTraceSnapshot {

private final TraceRoot traceRoot;
private final LocalTraceRoot traceRoot;

public SampledActiveTraceSnapshot(TraceRoot traceRoot) {
this.traceRoot = Objects.requireNonNull(traceRoot, "traceRoot");
public static ActiveTraceSnapshot of(LocalTraceRoot localTraceRoot) {
return new DefaultActiveTraceSnapshot(localTraceRoot);
}

DefaultActiveTraceSnapshot(LocalTraceRoot traceRoot) {
this.traceRoot = Objects.requireNonNull(traceRoot, "traceRoot");
}

@Override
Expand All @@ -49,17 +53,30 @@ public long getThreadId() {

@Override
public boolean isSampled() {
return true;
if (isRemote()) {
return true;
}
return false;
}

@Override
public String getTransactionId() {
return traceRoot.getTraceId().getTransactionId();
if (isRemote()) {
return ((TraceRoot) traceRoot).getTraceId().getTransactionId();
}
return null;
}

@Override
public String getEntryPoint() {
return traceRoot.getShared().getRpcName();
if (isRemote()) {
return traceRoot.getShared().getRpcName();
}
return null;
}

private boolean isRemote() {
return traceRoot instanceof TraceRoot;
}

@Override
Expand Down
Expand Up @@ -17,6 +17,7 @@
package com.navercorp.pinpoint.profiler.context.active;

import com.navercorp.pinpoint.common.trace.BaseHistogramSchema;
import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeCollector;

Expand Down Expand Up @@ -59,11 +60,10 @@ public ActiveTraceHandle register(TraceRoot traceRoot) {
}

@Override
public ActiveTraceHandle register(long localTransactionId, long startTime, long threadId) {
return new EmptyActiveTraceHandle(startTime);
public ActiveTraceHandle register(LocalTraceRoot traceRoot) {
return new EmptyActiveTraceHandle(traceRoot.getTraceStartTime());
}


private void remove(long startTime, long purgeTime) {
final long responseTime = purgeTime - startTime;
responseTimeCollector.add(responseTime);
Expand Down

This file was deleted.

This file was deleted.

Expand Up @@ -12,7 +12,7 @@

import static org.mockito.Mockito.mock;

public class LocalTraceTest {
public class LocalTraceRootTest {
@Test
public void testGetScope() {
LocalTraceRoot traceRoot = TraceRoot.local("testAgent", 2, 1);
Expand Down

0 comments on commit 08572d8

Please sign in to comment.