Skip to content

Commit e2106cc

Browse files
committed
fixed problems with Delay and CancellableContinuation
1 parent f9b827e commit e2106cc

File tree

6 files changed

+199
-164
lines changed

6 files changed

+199
-164
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package kotlinx.coroutines;
2+
3+
import com.newrelic.api.agent.Trace;
4+
import com.newrelic.api.agent.weaver.MatchType;
5+
import com.newrelic.api.agent.weaver.Weave;
6+
import com.newrelic.api.agent.weaver.Weaver;
7+
import kotlin.Unit;
8+
import kotlin.coroutines.CoroutineContext;
9+
import kotlin.jvm.functions.Function1;
10+
import kotlin.jvm.functions.Function3;
11+
12+
@Weave(originalName = "kotlinx.coroutines.CancellableContinuationImpl")
13+
public abstract class CancellableContinuationImpl_Instrumentation<T> {
14+
15+
@Trace
16+
public void resumeWith(Object obj) {
17+
Weaver.callOriginal();
18+
}
19+
20+
@Trace
21+
public java.lang.Object tryResumeWithException(Throwable t) {
22+
23+
return Weaver.callOriginal();
24+
}
25+
26+
@Trace
27+
public Object tryResume(T t, Object o) {
28+
return Weaver.callOriginal();
29+
}
30+
31+
@Trace
32+
public <R extends T> java.lang.Object tryResume(R r, Object obj, Function3<? super Throwable, ? super R, ? super CoroutineContext, Unit> function3) {
33+
return Weaver.callOriginal();
34+
}
35+
36+
@Trace
37+
public void completeResume(Object object) {
38+
Weaver.callOriginal();
39+
}
40+
41+
@Trace
42+
public boolean cancel(Throwable t) {
43+
return Weaver.callOriginal();
44+
}
45+
46+
@Trace
47+
public void invokeOnCancellation(Function1<? super Throwable, Unit> function1) {
48+
Weaver.callOriginal();
49+
}
50+
51+
@Trace
52+
public void resumeUndispatched(CoroutineDispatcher dispatcher, T t) {
53+
Weaver.callOriginal();
54+
}
55+
56+
@Trace
57+
public void resumeUndispatchedWithException(CoroutineDispatcher dispatcher, Throwable t) {
58+
Weaver.callOriginal();
59+
}
60+
61+
@Trace
62+
public <R extends T> void resume(R r, Function3<? super Throwable, ? super R, ? super CoroutineContext, Unit> function3) {
63+
Weaver.callOriginal();
64+
}
65+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package kotlinx.coroutines;
2+
3+
import com.newrelic.api.agent.Trace;
4+
import com.newrelic.api.agent.weaver.MatchType;
5+
import com.newrelic.api.agent.weaver.Weave;
6+
import com.newrelic.api.agent.weaver.Weaver;
7+
import kotlin.Unit;
8+
import kotlin.coroutines.CoroutineContext;
9+
import kotlin.jvm.functions.Function1;
10+
import kotlin.jvm.functions.Function3;
11+
12+
@Weave(originalName = "kotlinx.coroutines.CancellableContinuationImpl")
13+
public abstract class CancellableContinuationImpl_Instrumentation<T> {
14+
15+
@Trace
16+
public void resumeWith(Object obj) {
17+
Weaver.callOriginal();
18+
}
19+
20+
@Trace
21+
public java.lang.Object tryResumeWithException(Throwable t) {
22+
23+
return Weaver.callOriginal();
24+
}
25+
26+
@Trace
27+
public Object tryResume(T t, Object o) {
28+
return Weaver.callOriginal();
29+
}
30+
31+
@Trace
32+
public <R extends T> java.lang.Object tryResume(R r, Object obj, Function3<? super Throwable, ? super R, ? super CoroutineContext, Unit> function3) {
33+
return Weaver.callOriginal();
34+
}
35+
36+
@Trace
37+
public void completeResume(Object object) {
38+
Weaver.callOriginal();
39+
}
40+
41+
@Trace
42+
public boolean cancel(Throwable t) {
43+
return Weaver.callOriginal();
44+
}
45+
46+
@Trace
47+
public void invokeOnCancellation(Function1<? super Throwable, Unit> function1) {
48+
Weaver.callOriginal();
49+
}
50+
51+
@Trace
52+
public void resumeUndispatched(CoroutineDispatcher dispatcher, T t) {
53+
Weaver.callOriginal();
54+
}
55+
56+
@Trace
57+
public void resumeUndispatchedWithException(CoroutineDispatcher dispatcher, Throwable t) {
58+
Weaver.callOriginal();
59+
}
60+
61+
@Trace
62+
public <R extends T> void resume(R r, Function3<? super Throwable, ? super R, ? super CoroutineContext, Unit> function3) {
63+
Weaver.callOriginal();
64+
}
65+
}

Kotlin-Coroutines_1.9/src/main/java/com/newrelic/instrumentation/kotlin/coroutines_19/NRDelayCancellableContinuation.java

Lines changed: 0 additions & 159 deletions
This file was deleted.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package kotlinx.coroutines;
2+
3+
import com.newrelic.api.agent.Trace;
4+
import com.newrelic.api.agent.weaver.MatchType;
5+
import com.newrelic.api.agent.weaver.Weave;
6+
import com.newrelic.api.agent.weaver.Weaver;
7+
import kotlin.Unit;
8+
import kotlin.coroutines.CoroutineContext;
9+
import kotlin.jvm.functions.Function1;
10+
import kotlin.jvm.functions.Function3;
11+
12+
@Weave(originalName = "kotlinx.coroutines.CancellableContinuationImpl")
13+
public abstract class CancellableContinuationImpl_Instrumentation<T> {
14+
15+
@Trace
16+
public void resumeWith(Object obj) {
17+
Weaver.callOriginal();
18+
}
19+
20+
@Trace
21+
public java.lang.Object tryResumeWithException(Throwable t) {
22+
23+
return Weaver.callOriginal();
24+
}
25+
26+
@Trace
27+
public Object tryResume(T t, Object o) {
28+
return Weaver.callOriginal();
29+
}
30+
31+
@Trace
32+
public <R extends T> java.lang.Object tryResume(R r, Object obj, Function3<? super Throwable, ? super R, ? super CoroutineContext, Unit> function3) {
33+
return Weaver.callOriginal();
34+
}
35+
36+
@Trace
37+
public void completeResume(Object object) {
38+
Weaver.callOriginal();
39+
}
40+
41+
@Trace
42+
public boolean cancel(Throwable t) {
43+
return Weaver.callOriginal();
44+
}
45+
46+
@Trace
47+
public void invokeOnCancellation(Function1<? super Throwable, Unit> function1) {
48+
Weaver.callOriginal();
49+
}
50+
51+
@Trace
52+
public void resumeUndispatched(CoroutineDispatcher dispatcher, T t) {
53+
Weaver.callOriginal();
54+
}
55+
56+
@Trace
57+
public void resumeUndispatchedWithException(CoroutineDispatcher dispatcher, Throwable t) {
58+
Weaver.callOriginal();
59+
}
60+
61+
@Trace
62+
public <R extends T> void resume(R r, Function3<? super Throwable, ? super R, ? super CoroutineContext, Unit> function3) {
63+
Weaver.callOriginal();
64+
}
65+
}

Kotlin-Coroutines_1.9/src/main/java/kotlinx/coroutines/Delay_Instrumentation.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
package kotlinx.coroutines;
22

3+
import com.newrelic.api.agent.NewRelic;
34
import com.newrelic.api.agent.Trace;
45
import com.newrelic.api.agent.weaver.MatchType;
56
import com.newrelic.api.agent.weaver.Weave;
67
import com.newrelic.api.agent.weaver.Weaver;
7-
import com.newrelic.instrumentation.kotlin.coroutines_19.NRDelayCancellableContinuation;
88
import com.newrelic.instrumentation.kotlin.coroutines_19.NRDelayContinuation;
99
import com.newrelic.instrumentation.kotlin.coroutines_19.Utils;
1010
import kotlin.Unit;
1111
import kotlin.coroutines.Continuation;
1212
import kotlin.coroutines.CoroutineContext;
1313

14+
import java.util.logging.Level;
15+
1416
@Weave(type = MatchType.Interface, originalName = "kotlinx.coroutines.Delay")
1517
public class Delay_Instrumentation {
1618

@@ -24,9 +26,6 @@ public Object delay(long timeMills, Continuation<? super Unit> continuation) {
2426

2527
@Trace
2628
public void scheduleResumeAfterDelay(long timeMills, CancellableContinuation<? super Unit> continuation) {
27-
if(Utils.DELAYED_ENABLED && !(continuation instanceof NRDelayContinuation)) {
28-
continuation = new NRDelayCancellableContinuation<>(continuation,"scheduleResumeAfterDelay");
29-
}
3029
Weaver.callOriginal();
3130
}
3231

settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
rootProject.name = 'java-instrumentation-template'
1+
rootProject.name = 'kotlin-coroutines'
22
include 'Kotlin-Coroutines_1.0'
33
include 'Kotlin-Coroutines_1.1'
44
include 'Kotlin-Coroutines_1.2'

0 commit comments

Comments
 (0)