|
16 | 16 | import io.opentelemetry.instrumentation.rxjava.v1_0.TracedOnSubscribe; |
17 | 17 | import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; |
18 | 18 | import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; |
| 19 | +import javax.annotation.Nullable; |
19 | 20 | import net.bytebuddy.asm.Advice; |
| 21 | +import net.bytebuddy.asm.Advice.AssignReturned; |
20 | 22 | import net.bytebuddy.description.type.TypeDescription; |
21 | 23 | import net.bytebuddy.matcher.ElementMatcher; |
22 | 24 | import rx.Observable; |
@@ -48,28 +50,30 @@ public void transform(TypeTransformer transformer) { |
48 | 50 | @SuppressWarnings("unused") |
49 | 51 | public static class ExecuteAdvice { |
50 | 52 |
|
| 53 | + @AssignReturned.ToReturned |
51 | 54 | @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) |
52 | | - public static void stopSpan( |
| 55 | + public static Observable<?> stopSpan( |
53 | 56 | @Advice.This HystrixInvokableInfo<?> command, |
54 | | - @Advice.Return(readOnly = false) Observable<?> result, |
55 | | - @Advice.Thrown Throwable throwable) { |
| 57 | + @Advice.Return @Nullable Observable<?> result, |
| 58 | + @Advice.Thrown @Nullable Throwable throwable) { |
56 | 59 |
|
57 | 60 | HystrixRequest request = HystrixRequest.create(command, "execute"); |
58 | | - result = Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); |
| 61 | + return Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); |
59 | 62 | } |
60 | 63 | } |
61 | 64 |
|
62 | 65 | @SuppressWarnings("unused") |
63 | 66 | public static class FallbackAdvice { |
64 | 67 |
|
| 68 | + @AssignReturned.ToReturned |
65 | 69 | @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) |
66 | | - public static void stopSpan( |
| 70 | + public static Observable<?> stopSpan( |
67 | 71 | @Advice.This HystrixInvokableInfo<?> command, |
68 | | - @Advice.Return(readOnly = false) Observable<?> result, |
69 | | - @Advice.Thrown Throwable throwable) { |
| 72 | + @Advice.Return @Nullable Observable<?> result, |
| 73 | + @Advice.Thrown @Nullable Throwable throwable) { |
70 | 74 |
|
71 | 75 | HystrixRequest request = HystrixRequest.create(command, "fallback"); |
72 | | - result = Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); |
| 76 | + return Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); |
73 | 77 | } |
74 | 78 | } |
75 | 79 | } |
0 commit comments