From 08572d8f1db6d62688ad70a42942a752f3ea702c Mon Sep 17 00:00:00 2001 From: emeroad Date: Fri, 20 Jan 2023 17:48:56 +0900 Subject: [PATCH] [#9595] Refactor ActiveThreadDump --- .../context/DefaultBaseTraceFactory.java | 8 +- .../profiler/context/DisableTrace.java | 7 ++ .../context/active/ActiveTraceRepository.java | 3 +- ...tiveTrace.java => DefaultActiveTrace.java} | 10 +-- .../active/DefaultActiveTraceRepository.java | 17 ++-- ...t.java => DefaultActiveTraceSnapshot.java} | 31 ++++++-- .../active/EmptyActiveTraceRepository.java | 6 +- .../context/active/UnsampledActiveTrace.java | 60 --------------- .../active/UnsampledActiveTraceSnapshot.java | 77 ------------------- ...TraceTest.java => LocalTraceRootTest.java} | 2 +- .../service/ActiveThreadDumpServiceTest.java | 18 +++-- .../ActiveThreadLightDumpServiceTest.java | 25 +++--- .../receiver/service/LimitedListTest.java | 10 ++- 13 files changed, 86 insertions(+), 188 deletions(-) rename profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/{SampledActiveTrace.java => DefaultActiveTrace.java} (81%) rename profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/{SampledActiveTraceSnapshot.java => DefaultActiveTraceSnapshot.java} (65%) delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTrace.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTraceSnapshot.java rename profiler/src/test/java/com/navercorp/pinpoint/profiler/context/id/{LocalTraceTest.java => LocalTraceRootTest.java} (98%) diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DefaultBaseTraceFactory.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DefaultBaseTraceFactory.java index 61ad14198cf6..f9e1df35555e 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DefaultBaseTraceFactory.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DefaultBaseTraceFactory.java @@ -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 @@ -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); } } \ No newline at end of file diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DisableTrace.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DisableTrace.java index 7261b81afdd2..6c686c393803 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DisableTrace.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DisableTrace.java @@ -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 diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/ActiveTraceRepository.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/ActiveTraceRepository.java index 244523a3ae00..e2248fd779f5 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/ActiveTraceRepository.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/ActiveTraceRepository.java @@ -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; @@ -33,6 +34,6 @@ public interface ActiveTraceRepository { ActiveTraceHandle register(TraceRoot traceRoot); - ActiveTraceHandle register(long localTransactionId, long startTime, long threadId); + ActiveTraceHandle register(LocalTraceRoot traceRoot); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/SampledActiveTrace.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTrace.java similarity index 81% rename from profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/SampledActiveTrace.java rename to profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTrace.java index 3b42356aed95..bdd123234344 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/SampledActiveTrace.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTrace.java @@ -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"); } @@ -45,7 +45,7 @@ public long getId() { @Override public ActiveTraceSnapshot snapshot() { - return new SampledActiveTraceSnapshot(traceRoot); + return DefaultActiveTraceSnapshot.of(traceRoot); } @Override diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTraceRepository.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTraceRepository.java index cb41a3913935..9d75bef9275f 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTraceRepository.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTraceRepository.java @@ -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; @@ -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); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/SampledActiveTraceSnapshot.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTraceSnapshot.java similarity index 65% rename from profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/SampledActiveTraceSnapshot.java rename to profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTraceSnapshot.java index cdadb31c46aa..786eabe58833 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/SampledActiveTraceSnapshot.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/DefaultActiveTraceSnapshot.java @@ -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.Objects; @@ -23,13 +24,16 @@ /** * @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 @@ -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 diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/EmptyActiveTraceRepository.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/EmptyActiveTraceRepository.java index 90dc9df3ac97..5de3491afb77 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/EmptyActiveTraceRepository.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/EmptyActiveTraceRepository.java @@ -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; @@ -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); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTrace.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTrace.java deleted file mode 100644 index 115628597188..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTrace.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2017 NAVER Corp. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.navercorp.pinpoint.profiler.context.active; - - -/** - * @author HyunGil Jeong - */ -public class UnsampledActiveTrace implements ActiveTrace { - - private final long id; - private final long startTime; - private final long threadId; - - UnsampledActiveTrace(long id, long startTime, long threadId) { - this.id = id; - this.startTime = startTime; - // @Nullable - this.threadId = threadId; - } - - @Override - public long getStartTime() { - return startTime; - } - - @Override - public long getId() { - return id; - } - - - @Override - public ActiveTraceSnapshot snapshot() { - return new UnsampledActiveTraceSnapshot(id, startTime, threadId); - } - - @Override - public String toString() { - return "UnsampledActiveTrace{" + - "id=" + id + - ", startTime=" + startTime + - ", threadId=" + threadId + - '}'; - } -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTraceSnapshot.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTraceSnapshot.java deleted file mode 100644 index 261479cc40f2..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/active/UnsampledActiveTraceSnapshot.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2017 NAVER Corp. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.navercorp.pinpoint.profiler.context.active; - - -/** - * @author Taejin Koo - */ -public class UnsampledActiveTraceSnapshot implements ActiveTraceSnapshot { - - private final long localTraceId; - private final long startTime; - private final long threadId; - - public UnsampledActiveTraceSnapshot(long id, long startTime, long threadId) { - this.localTraceId = id; - this.startTime = startTime; - // @Nullable - this.threadId = threadId; - } - - - @Override - public long getLocalTransactionId() { - return localTraceId; - } - - @Override - public long getStartTime() { - return startTime; - } - - @Override - public long getThreadId() { - return threadId; - } - - @Override - public boolean isSampled() { - return false; - } - - @Override - public String getTransactionId() { - return null; - } - - @Override - public String getEntryPoint() { - return null; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("UnsampledActiveTraceSnapshot{"); - sb.append("localTraceId=").append(localTraceId); - sb.append(", startTime=").append(startTime); - sb.append(", threadId=").append(threadId); - sb.append('}'); - return sb.toString(); - } - -} diff --git a/profiler/src/test/java/com/navercorp/pinpoint/profiler/context/id/LocalTraceTest.java b/profiler/src/test/java/com/navercorp/pinpoint/profiler/context/id/LocalTraceRootTest.java similarity index 98% rename from profiler/src/test/java/com/navercorp/pinpoint/profiler/context/id/LocalTraceTest.java rename to profiler/src/test/java/com/navercorp/pinpoint/profiler/context/id/LocalTraceRootTest.java index 281beeb412ff..216a5bab19aa 100644 --- a/profiler/src/test/java/com/navercorp/pinpoint/profiler/context/id/LocalTraceTest.java +++ b/profiler/src/test/java/com/navercorp/pinpoint/profiler/context/id/LocalTraceRootTest.java @@ -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); diff --git a/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpServiceTest.java b/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpServiceTest.java index 50d0785f6ce9..52071a9810aa 100644 --- a/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpServiceTest.java +++ b/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpServiceTest.java @@ -20,7 +20,9 @@ import com.navercorp.pinpoint.common.util.ThreadMXBeanUtils; import com.navercorp.pinpoint.profiler.context.active.ActiveTraceRepository; import com.navercorp.pinpoint.profiler.context.active.ActiveTraceSnapshot; -import com.navercorp.pinpoint.profiler.context.active.UnsampledActiveTraceSnapshot; +import com.navercorp.pinpoint.profiler.context.active.DefaultActiveTraceSnapshot; +import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot; +import com.navercorp.pinpoint.profiler.context.id.TraceRoot; import com.navercorp.pinpoint.thrift.dto.command.TActiveThreadDump; import com.navercorp.pinpoint.thrift.dto.command.TCmdActiveThreadDump; import com.navercorp.pinpoint.thrift.dto.command.TCmdActiveThreadDumpRes; @@ -30,7 +32,6 @@ import java.lang.management.ThreadInfo; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.ThreadLocalRandom; @@ -80,7 +81,7 @@ public void basicFunctionTest2() { List activeTraceInfoList = createMockActiveTraceInfoList(CREATE_SIZE, DEFAULT_TIME_MILLIS, TIME_DIFF_INTERVAL, waitingJobList); - TCmdActiveThreadDump tCmdActiveThreadDump = createRequest(0, null, Arrays.asList(1L)); + TCmdActiveThreadDump tCmdActiveThreadDump = createRequest(0, null, Collections.singletonList(1L)); ActiveThreadDumpService service = createService(activeTraceInfoList); TCmdActiveThreadDumpRes response = (TCmdActiveThreadDumpRes) service.requestCommandService(tCmdActiveThreadDump); @@ -165,8 +166,13 @@ private List createMockActiveTraceInfoList(int createActive private ActiveTraceSnapshot createActiveTraceInfo(long startTime, Runnable runnable) { Thread thread = pinpointThreadFactory.newThread(runnable); thread.start(); - long id = thread.getId(); - return new UnsampledActiveTraceSnapshot(idGenerator.incrementAndGet(), startTime, id); + long threadId = thread.getId(); + + int id = idGenerator.incrementAndGet(); + LocalTraceRoot traceRoot = TraceRoot.local("agentId-" + id, startTime, id); + traceRoot.getShared().setThreadId(threadId); + + return DefaultActiveTraceSnapshot.of(traceRoot); } private List getOldTimeList(int maxCount) { @@ -203,7 +209,7 @@ private List extractLocalTraceIdList(List activeTrace } private List shuffle(List list) { - List copied = new ArrayList(list); + List copied = new ArrayList<>(list); Collections.shuffle(copied, ThreadLocalRandom.current()); return copied; } diff --git a/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadLightDumpServiceTest.java b/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadLightDumpServiceTest.java index ab0da36d2ae6..3b4220b63223 100644 --- a/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadLightDumpServiceTest.java +++ b/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadLightDumpServiceTest.java @@ -21,7 +21,9 @@ import com.navercorp.pinpoint.common.util.ThreadMXBeanUtils; import com.navercorp.pinpoint.profiler.context.active.ActiveTraceRepository; import com.navercorp.pinpoint.profiler.context.active.ActiveTraceSnapshot; -import com.navercorp.pinpoint.profiler.context.active.UnsampledActiveTraceSnapshot; +import com.navercorp.pinpoint.profiler.context.active.DefaultActiveTraceSnapshot; +import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot; +import com.navercorp.pinpoint.profiler.context.id.TraceRoot; import com.navercorp.pinpoint.thrift.dto.command.TActiveThreadLightDump; import com.navercorp.pinpoint.thrift.dto.command.TCmdActiveThreadLightDump; import com.navercorp.pinpoint.thrift.dto.command.TCmdActiveThreadLightDumpRes; @@ -33,7 +35,6 @@ import java.lang.management.ThreadInfo; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.ThreadLocalRandom; @@ -86,7 +87,7 @@ public void basicFunctionTest2() throws Exception { List activeTraceInfoList = createMockActiveTraceInfoList(CREATE_SIZE, DEFAULT_TIME_MILLIS, TIME_DIFF_INTERVAL, waitingJobList); - TCmdActiveThreadLightDump tCmdActiveThreadDump = createRequest(0, null, Arrays.asList(1L)); + TCmdActiveThreadLightDump tCmdActiveThreadDump = createRequest(0, null, Collections.singletonList(1L)); ActiveThreadLightDumpService service = createService(activeTraceInfoList); TCmdActiveThreadLightDumpRes response = (TCmdActiveThreadLightDumpRes) service.requestCommandService(tCmdActiveThreadDump); @@ -160,7 +161,7 @@ public void basicFunctionTest5() throws Exception { private List createMockActiveTraceInfoList(int createActiveTraceRepositorySize, long currentTimeMillis, long diff, List waitingJobList) { - List activeTraceInfoList = new ArrayList(createActiveTraceRepositorySize); + List activeTraceInfoList = new ArrayList<>(createActiveTraceRepositorySize); for (int i = 0; i < createActiveTraceRepositorySize; i++) { ActiveTraceSnapshot activeTraceInfo = createActiveTraceInfo(currentTimeMillis + (diff * i), waitingJobList.get(i)); activeTraceInfoList.add(activeTraceInfo); @@ -171,11 +172,17 @@ private List createMockActiveTraceInfoList(int createActive private ActiveTraceSnapshot createActiveTraceInfo(long startTime, Runnable runnable) { Thread thread = pinpointThreadFactory.newThread(runnable); thread.start(); - return new UnsampledActiveTraceSnapshot(idGenerator.incrementAndGet(), startTime, thread.getId()); + long threadId = thread.getId(); + + int id = idGenerator.incrementAndGet(); + LocalTraceRoot traceRoot = TraceRoot.local("agentId-" + id, startTime, id); + traceRoot.getShared().setThreadId(threadId); + + return DefaultActiveTraceSnapshot.of(traceRoot); } private List getOldTimeList(int maxCount) { - List startTimeMillisList = new ArrayList(maxCount); + List startTimeMillisList = new ArrayList<>(maxCount); for (int i = 0; i < maxCount; i++) { startTimeMillisList.add(DEFAULT_TIME_MILLIS + (TIME_DIFF_INTERVAL * i)); } @@ -185,7 +192,7 @@ private List getOldTimeList(int maxCount) { private List extractThreadNameList(List activeTraceInfoList, int size) { List activeTraceSnapshotList = shuffle(activeTraceInfoList); - List threadNameList = new ArrayList(size); + List threadNameList = new ArrayList<>(size); for (int i = 0; i < size; i++) { final ActiveTraceSnapshot activeTraceSnapshot = activeTraceSnapshotList.get(i); final long threadId = activeTraceSnapshot.getThreadId(); @@ -199,7 +206,7 @@ private List extractThreadNameList(List activeTrace private List extractLocalTraceIdList(List activeTraceInfoList, int size) { List activeTraceSnapshotList = shuffle(activeTraceInfoList); - List localTraceIdList = new ArrayList(size); + List localTraceIdList = new ArrayList<>(size); for (int i = 0; i < size; i++) { localTraceIdList.add(activeTraceSnapshotList.get(i).getLocalTransactionId()); } @@ -208,7 +215,7 @@ private List extractLocalTraceIdList(List activeTrace } private List shuffle(List list) { - List result = new ArrayList(list); + List result = new ArrayList<>(list); Collections.shuffle(result, ThreadLocalRandom.current()); return result; } diff --git a/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/LimitedListTest.java b/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/LimitedListTest.java index fcc0dd9407c0..feb702eb3d97 100644 --- a/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/LimitedListTest.java +++ b/profiler/src/test/java/com/navercorp/pinpoint/profiler/receiver/service/LimitedListTest.java @@ -17,7 +17,9 @@ package com.navercorp.pinpoint.profiler.receiver.service; import com.navercorp.pinpoint.profiler.context.active.ActiveTraceSnapshot; -import com.navercorp.pinpoint.profiler.context.active.UnsampledActiveTraceSnapshot; +import com.navercorp.pinpoint.profiler.context.active.DefaultActiveTraceSnapshot; +import com.navercorp.pinpoint.profiler.context.id.LocalTraceRoot; +import com.navercorp.pinpoint.profiler.context.id.TraceRoot; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; @@ -88,10 +90,12 @@ private int getLastIndex(List testData) { private List newTestData(int localTransactionId, long startTime, long threadId, int size) { - List result = new ArrayList(); + List result = new ArrayList<>(); for (int i = 0; i < size; i++) { + LocalTraceRoot traceRoot = TraceRoot.local("agent-" + localTransactionId, startTime, localTransactionId); + traceRoot.getShared().setThreadId(threadId); - ActiveTraceSnapshot activeTraceSnapshot = new UnsampledActiveTraceSnapshot(localTransactionId, startTime, threadId); + ActiveTraceSnapshot activeTraceSnapshot = DefaultActiveTraceSnapshot.of(traceRoot); ThreadInfo threadInfo = mock(ThreadInfo.class); ThreadDump threadDump = new ThreadDump(activeTraceSnapshot, threadInfo);