Skip to content

Commit 323027d

Browse files
otelbot[bot]trask
authored andcommitted
Review fixes for rxjava-1.0:library
Automated code review of instrumentation/rxjava/rxjava-1.0/library.
1 parent 85b39ac commit 323027d

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

instrumentation/rxjava/rxjava-1.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v1_0/TracedOnSubscribe.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.context.Context;
99
import io.opentelemetry.context.Scope;
1010
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
11+
import java.util.concurrent.atomic.AtomicReference;
1112
import rx.Observable;
1213
import rx.OpenTelemetryTracingUtil;
1314
import rx.Subscriber;
@@ -41,8 +42,15 @@ public void call(Subscriber<? super T> subscriber) {
4142
*/
4243

4344
Context context = instrumenter.start(parentContext, request);
45+
AtomicReference<Context> contextRef = new AtomicReference<>(context);
4446
try (Scope ignored = context.makeCurrent()) {
45-
delegate.call(new TracedSubscriber<>(subscriber, instrumenter, context, request));
47+
delegate.call(new TracedSubscriber<>(subscriber, instrumenter, contextRef, request));
48+
} catch (Throwable t) {
49+
Context spanContext = contextRef.getAndSet(null);
50+
if (spanContext != null) {
51+
instrumenter.end(spanContext, request, null, t);
52+
}
53+
throw t;
4654
}
4755
}
4856
}

instrumentation/rxjava/rxjava-1.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v1_0/TracedSubscriber.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ final class TracedSubscriber<T, REQUEST> extends Subscriber<T> {
2121
TracedSubscriber(
2222
Subscriber<? super T> delegate,
2323
Instrumenter<REQUEST, ?> instrumenter,
24-
Context context,
24+
AtomicReference<Context> contextRef,
2525
REQUEST request) {
2626
this.delegate = delegate;
2727
this.instrumenter = instrumenter;
28-
this.contextRef = new AtomicReference<>(context);
28+
this.contextRef = contextRef;
2929
this.request = request;
3030

3131
delegate.add(new SpanFinishingSubscription<>(instrumenter, contextRef, request));

0 commit comments

Comments
 (0)