Skip to content

Commit 2539208

Browse files
committed
refactor to use ExtendedSpanProcessor.onEnding
1 parent b0aae23 commit 2539208

File tree

8 files changed

+35
-714
lines changed

8 files changed

+35
-714
lines changed

span-stacktrace/src/main/java/io/opentelemetry/contrib/stacktrace/StackTraceSpanProcessor.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66
package io.opentelemetry.contrib.stacktrace;
77

88
import io.opentelemetry.api.common.AttributeKey;
9-
import io.opentelemetry.contrib.stacktrace.internal.AbstractSimpleChainingSpanProcessor;
10-
import io.opentelemetry.contrib.stacktrace.internal.MutableSpan;
9+
import io.opentelemetry.context.Context;
1110
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
11+
import io.opentelemetry.sdk.trace.ReadWriteSpan;
1212
import io.opentelemetry.sdk.trace.ReadableSpan;
13-
import io.opentelemetry.sdk.trace.SpanProcessor;
13+
import io.opentelemetry.sdk.trace.internal.ExtendedSpanProcessor;
1414
import java.io.PrintWriter;
1515
import java.io.StringWriter;
1616
import java.time.Duration;
1717
import java.util.function.Predicate;
1818
import java.util.logging.Level;
1919
import java.util.logging.Logger;
2020

21-
public class StackTraceSpanProcessor extends AbstractSimpleChainingSpanProcessor {
21+
public class StackTraceSpanProcessor implements ExtendedSpanProcessor {
2222

2323
private static final String CONFIG_MIN_DURATION =
2424
"otel.java.experimental.span-stacktrace.min.duration";
@@ -35,13 +35,11 @@ public class StackTraceSpanProcessor extends AbstractSimpleChainingSpanProcessor
3535
private final Predicate<ReadableSpan> filterPredicate;
3636

3737
/**
38-
* @param next next span processor to invoke
3938
* @param minSpanDurationNanos minimum span duration in ns for stacktrace capture
4039
* @param filterPredicate extra filter function to exclude spans if needed
4140
*/
4241
public StackTraceSpanProcessor(
43-
SpanProcessor next, long minSpanDurationNanos, Predicate<ReadableSpan> filterPredicate) {
44-
super(next);
42+
long minSpanDurationNanos, Predicate<ReadableSpan> filterPredicate) {
4543
this.minSpanDurationNanos = minSpanDurationNanos;
4644
this.filterPredicate = filterPredicate;
4745
if (minSpanDurationNanos < 0) {
@@ -55,47 +53,51 @@ public StackTraceSpanProcessor(
5553
}
5654

5755
/**
58-
* @param next next span processor to invoke
5956
* @param config configuration
6057
* @param filterPredicate extra filter function to exclude spans if needed
6158
*/
62-
public StackTraceSpanProcessor(
63-
SpanProcessor next, ConfigProperties config, Predicate<ReadableSpan> filterPredicate) {
59+
public StackTraceSpanProcessor(ConfigProperties config, Predicate<ReadableSpan> filterPredicate) {
6460
this(
65-
next,
6661
config.getDuration(CONFIG_MIN_DURATION, CONFIG_MIN_DURATION_DEFAULT).toNanos(),
6762
filterPredicate);
6863
}
6964

7065
@Override
71-
protected boolean requiresStart() {
66+
public boolean isStartRequired() {
7267
return false;
7368
}
7469

7570
@Override
76-
protected boolean requiresEnd() {
71+
public void onStart(Context context, ReadWriteSpan readWriteSpan) {}
72+
73+
@Override
74+
public boolean isOnEndingRequired() {
7775
return true;
7876
}
7977

8078
@Override
81-
protected ReadableSpan doOnEnd(ReadableSpan span) {
79+
public void onEnding(ReadWriteSpan span) {
8280
if (minSpanDurationNanos < 0 || span.getLatencyNanos() < minSpanDurationNanos) {
83-
return span;
81+
return;
8482
}
8583
if (span.getAttribute(SPAN_STACKTRACE) != null) {
8684
// Span already has a stacktrace, do not override
87-
return span;
85+
return;
8886
}
8987
if (!filterPredicate.test(span)) {
90-
return span;
88+
return;
9189
}
92-
MutableSpan mutableSpan = MutableSpan.makeMutable(span);
90+
span.setAttribute(SPAN_STACKTRACE, generateSpanEndStacktrace());
91+
}
9392

94-
String stacktrace = generateSpanEndStacktrace();
95-
mutableSpan.setAttribute(SPAN_STACKTRACE, stacktrace);
96-
return mutableSpan;
93+
@Override
94+
public boolean isEndRequired() {
95+
return false;
9796
}
9897

98+
@Override
99+
public void onEnd(ReadableSpan readableSpan) {}
100+
99101
private static String generateSpanEndStacktrace() {
100102
Throwable exception = new Throwable();
101103
StringWriter stringWriter = new StringWriter();

span-stacktrace/src/main/java/io/opentelemetry/contrib/stacktrace/internal/AbstractSimpleChainingSpanProcessor.java

Lines changed: 0 additions & 139 deletions
This file was deleted.

span-stacktrace/src/main/java/io/opentelemetry/contrib/stacktrace/internal/MutableSpan.java

Lines changed: 0 additions & 153 deletions
This file was deleted.

0 commit comments

Comments
 (0)