Skip to content

Commit f6eb69d

Browse files
committed
[#9693] CallStack OverFlow check is missing in AsyncChildTrace
1 parent f40b797 commit f6eb69d

File tree

5 files changed

+24
-16
lines changed

5 files changed

+24
-16
lines changed

profiler/src/main/java/com/navercorp/pinpoint/profiler/context/AsyncChildTrace.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ private SpanEvent traceBlockBegin0(final int stackId) {
103103

104104
private void stackDump(String caused) {
105105
PinpointException exception = new PinpointException(caused);
106-
logger.warn("[DefaultTrace] Corrupted call stack found TraceRoot:{}, CallStack:{}", getTraceRoot(), callStack, exception);
106+
logger.warn("Corrupted call stack found TraceRoot:{}, CallStack:{}", getTraceRoot(), callStack, exception);
107107
}
108108

109109
@Override
@@ -258,20 +258,20 @@ public SpanEventRecorder currentSpanEventRecorder() {
258258
}
259259

260260
private SpanEvent newSpanEvent(int stackId) {
261-
final SpanEvent spanEvent = callStack.getFactory().newInstance();
261+
final SpanEvent spanEvent = callStack.newInstance();
262262
spanEvent.markStartTime();
263263
spanEvent.setStackId(stackId);
264264
return spanEvent;
265265
}
266266

267267
@VisibleForTesting
268268
SpanEvent dummySpanEvent() {
269-
return callStack.getFactory().disableInstance();
269+
return callStack.disableInstance();
270270
}
271271

272272
@VisibleForTesting
273273
boolean isDummySpanEvent(final SpanEvent spanEvent) {
274-
return callStack.getFactory().isDisable(spanEvent);
274+
return callStack.isDisable(spanEvent);
275275
}
276276

277277
@Override

profiler/src/main/java/com/navercorp/pinpoint/profiler/context/CallStack.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public interface CallStack<T> {
3838

3939
T newInstance();
4040

41-
Factory<T> getFactory();
41+
T disableInstance();
42+
43+
boolean isDisable(T element);
4244

4345
void setOverflowListener(CallStackOverflowListener overflowListener);
4446

profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DefaultCallStack.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,14 @@ public T newInstance() {
190190
}
191191

192192
@Override
193-
public Factory<T> getFactory() {
194-
return factory;
193+
public T disableInstance() {
194+
return this.factory.disableInstance();
195+
}
196+
197+
@Override
198+
public boolean isDisable(T element) {
199+
return this.factory.isDisable(element);
200+
195201
}
196202

197203
@Override

profiler/src/main/java/com/navercorp/pinpoint/profiler/context/DefaultTrace.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ private SpanEvent traceBlockBegin0(final int stackId) {
121121
private void stackDump(String caused) {
122122
PinpointException exception = new PinpointException(caused);
123123
if (logger.isWarnEnabled()) {
124-
logger.warn("[{}] Corrupted call stack found TraceRoot:{}, CallStack:{}", getClass().getSimpleName(), getTraceRoot(), callStack, exception);
124+
logger.warn("Corrupted call stack found TraceRoot:{}, CallStack:{}", getTraceRoot(), callStack, exception);
125125
}
126126
}
127127

@@ -282,12 +282,12 @@ private SpanEvent newSpanEvent(int stackId) {
282282

283283
@VisibleForTesting
284284
SpanEvent dummySpanEvent() {
285-
return callStack.getFactory().disableInstance();
285+
return callStack.disableInstance();
286286
}
287287

288288
@VisibleForTesting
289289
boolean isDummySpanEvent(final SpanEvent spanEvent) {
290-
return callStack.getFactory().isDisable(spanEvent);
290+
return callStack.isDisable(spanEvent);
291291
}
292292

293293
@Override

profiler/src/test/java/com/navercorp/pinpoint/profiler/context/CallStackTest.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public void newInstance() {
115115
callStack.push(spanEvent1);
116116

117117
SpanEvent spanEvent2 = callStack.newInstance();
118-
assertTrue(callStack.getFactory().isDisable(spanEvent2));
118+
assertTrue(callStack.isDisable(spanEvent2));
119119
}
120120

121121
@Test
@@ -177,19 +177,19 @@ public void overflow2() {
177177
// overflow by sequence
178178
assertEquals(maxDepth - 1, callStack.getIndex());
179179
assertTrue(callStack.isOverflow());
180-
assertFalse(callStack.getFactory().isDisable(callStack.peek()));
180+
assertFalse(callStack.isDisable(callStack.peek()));
181181

182182
callStack.push(getSpanEvent());
183183
assertEquals(maxDepth, callStack.getIndex());
184-
assertTrue(callStack.getFactory().isDisable(callStack.peek()));
185-
assertTrue(callStack.getFactory().isDisable(callStack.pop()));
184+
assertTrue(callStack.isDisable(callStack.peek()));
185+
assertTrue(callStack.isDisable(callStack.pop()));
186186

187187
for (int i = maxDepth - 1; i > 0; i--) {
188188
assertNotNull(callStack.peek());
189-
assertFalse(callStack.getFactory().isDisable(callStack.peek()));
189+
assertFalse(callStack.isDisable(callStack.peek()));
190190
SpanEvent element = callStack.pop();
191191
assertNotNull(element);
192-
assertFalse(callStack.getFactory().isDisable(element));
192+
assertFalse(callStack.isDisable(element));
193193
assertTrue(callStack.isOverflow());
194194
}
195195
}

0 commit comments

Comments
 (0)