Skip to content

Commit b5f234f

Browse files
committed
Sept 12 baseline
1 parent bb1b40d commit b5f234f

File tree

9 files changed

+50
-25
lines changed

9 files changed

+50
-25
lines changed

Kotlin-Coroutines-Suspends/src/main/java/com/newrelic/instrumentation/kotlin/coroutines/Utils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.newrelic.instrumentation.kotlin.coroutines;
22

3+
import com.newrelic.agent.Transaction;
4+
import com.newrelic.agent.TransactionActivity;
35
import com.newrelic.agent.config.AgentConfig;
46
import com.newrelic.agent.config.AgentConfigListener;
57
import com.newrelic.agent.service.ServiceFactory;
@@ -38,4 +40,10 @@ public static String getSuspendString(String cont_string, Object obj) {
3840

3941
return obj.getClass().getName();
4042
}
43+
44+
public static boolean tracerCheck(Transaction transaction) {
45+
TransactionActivity txn = transaction.getTransactionActivity();
46+
47+
return !(txn.getTracers().isEmpty());
48+
}
4149
}

Kotlin-Coroutines-Suspends/src/main/java/com/newrelic/instrumentation/kotlin/coroutines/tracing/SuspendTracerFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ public Tracer getTracer(Transaction transaction, ClassMethodSignature sig, Objec
1919
if(SuspendIgnores.ignoreSuspend(object)) {
2020
return null;
2121
}
22+
if(!transaction.shouldGenerateTransactionSegment()) {
23+
return null;
24+
}
2225
return new DefaultTracer(transaction, sig, object, new SimpleMetricNameFormat("Custom/SuspendFunction/"+Utils.getSuspendString(object.toString(), object)));
2326
}
2427

Kotlin-Coroutines_1.0/src/main/java/kotlinx/coroutines/CancellableContinuation.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ public void resumeUndispatched(CoroutineDispatcher d, T t) {
1616

1717
@Trace
1818
public void resumeUndispatchedWithException(CoroutineDispatcher d, java.lang.Throwable t) {
19-
NewRelic.noticeError(t);
19+
if(!(t instanceof JobCancellationException)) {
20+
NewRelic.noticeError(t);
21+
}
2022
Weaver.callOriginal();
2123
}
2224

Kotlin-Coroutines_1.4/src/main/java/kotlinx/coroutines/CoroutineExceptionHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ public abstract class CoroutineExceptionHandler {
1111

1212
@Trace
1313
public void handleException(kotlin.coroutines.CoroutineContext ctx, java.lang.Throwable t) {
14-
NewRelic.noticeError(t);
14+
if (!(t instanceof JobCancellationException)) {
15+
NewRelic.noticeError(t);
16+
}
1517
Weaver.callOriginal();
1618
}
1719
}

Kotlin-Coroutines_1.5/src/main/java/kotlinx/coroutines/CoroutineExceptionHandler.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,20 @@ public abstract class CoroutineExceptionHandler {
1414

1515
@Trace
1616
public void handleException(kotlin.coroutines.CoroutineContext ctx, java.lang.Throwable t) {
17-
String cName = Utils.getCoroutineName(ctx);
18-
if(cName != null && !cName.isEmpty()) {
19-
HashMap<String, String> attributes = new HashMap<>();
20-
attributes.put("Coroutine-Name", cName);
21-
NewRelic.noticeError(t, attributes);
22-
} else {
23-
NewRelic.noticeError(t);
24-
}
25-
17+
if (!(t instanceof JobCancellationException)) {
18+
String cName = Utils.getCoroutineName(ctx);
19+
if(cName != null && !cName.isEmpty()) {
20+
HashMap<String, String> attributes = new HashMap<>();
21+
attributes.put("Coroutine-Name", cName);
22+
if (!(t instanceof JobCancellationException)) {
23+
NewRelic.noticeError(t, attributes);
24+
}
25+
} else {
26+
if (!(t instanceof JobCancellationException)) {
27+
NewRelic.noticeError(t);
28+
}
29+
}
30+
}
2631
Weaver.callOriginal();
2732
}
2833
}

Kotlin-Coroutines_1.7/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
apply plugin: 'java'
55

6-
targetCompatibility = JavaVersion.VERSION_1_9
6+
//targetCompatibility = JavaVersion.VERSION_1_9
77

88
dependencies {
99
implementation group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '1.7.3'

Kotlin-Coroutines_1.7/src/main/java/kotlinx/coroutines/AbstractCoroutine.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ protected void onCancelled(Throwable t, boolean b) {
3131
}
3232

3333
public void handleOnCompletionException$kotlinx_coroutines_core(Throwable t) {
34-
NewRelic.noticeError(t);
34+
if (!(t instanceof JobCancellationException)) {
35+
NewRelic.noticeError(t);
36+
}
3537
Weaver.callOriginal();
3638
}
37-
38-
39+
40+
3941

4042
@Trace
4143
public <R> void start(CoroutineStart start, R receiver, Function2<? super R, ? super Continuation<? super T>, ? extends Object> block) {
@@ -44,7 +46,7 @@ public <R> void start(CoroutineStart start, R receiver, Function2<? super R, ? s
4446
TracedMethod traced = NewRelic.getAgent().getTracedMethod();
4547
traced.addCustomAttribute("Coroutine-Name", name);
4648
traced.addCustomAttribute("Block", block.toString());
47-
49+
4850
if(name != null && !name.isEmpty()) {
4951
NewRelic.getAgent().getTransaction().setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "Coroutine", "Kotlin","Coroutine",name);
5052
traced.setMetricName("Custom","Kotlin","Coroutines",getClass().getSimpleName(),"start",name);

Kotlin-Coroutines_1.7/src/main/java/kotlinx/coroutines/CoroutineExceptionHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ public abstract class CoroutineExceptionHandler {
1111

1212
@Trace
1313
public void handleException(kotlin.coroutines.CoroutineContext ctx, java.lang.Throwable t) {
14-
NewRelic.noticeError(t);
14+
if (!(t instanceof JobCancellationException)) {
15+
NewRelic.noticeError(t);
16+
}
1517
Weaver.callOriginal();
1618
}
1719
}

Kotlin-Coroutines_1.7/src/main/java/kotlinx/coroutines/CoroutineExceptionHandlerKt.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@ public abstract class CoroutineExceptionHandlerKt {
1313

1414
@Trace
1515
public static void handleCoroutineException(kotlin.coroutines.CoroutineContext ctx,Throwable t) {
16-
String cName = Utils.getCoroutineName(ctx);
17-
if(cName != null && !cName.isEmpty()) {
18-
HashMap<String, String> attributes = new HashMap<>();
19-
attributes.put("Coroutine-Name", cName);
20-
NewRelic.noticeError(t, attributes);
21-
} else {
22-
NewRelic.noticeError(t);
16+
if (!(t instanceof JobCancellationException)) {
17+
String cName = Utils.getCoroutineName(ctx);
18+
if (cName != null && !cName.isEmpty()) {
19+
HashMap<String, String> attributes = new HashMap<>();
20+
attributes.put("Coroutine-Name", cName);
21+
NewRelic.noticeError(t, attributes);
22+
} else {
23+
NewRelic.noticeError(t);
24+
}
2325
}
24-
2526
Weaver.callOriginal();
2627
}
2728
}

0 commit comments

Comments
 (0)