Skip to content

Commit a42637c

Browse files
Merge pull request #2792 from newrelic/micronaut-fixes
Micronaut fixes
2 parents 26a9d2f + 9c6e19c commit a42637c

92 files changed

Lines changed: 1768 additions & 1105 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
*
3+
* * Copyright 2025 New Relic Corporation. All rights reserved.
4+
* * SPDX-License-Identifier: Apache-2.0
5+
*
6+
*/
7+
8+
package com.nr.agent.instrumentation.micronaut;
9+
10+
import com.newrelic.agent.bridge.AgentBridge;
11+
import com.newrelic.api.agent.NewRelic;
12+
import com.newrelic.api.agent.Trace;
13+
14+
import java.util.function.BiConsumer;
15+
16+
public class NRBiConsumerTokenWrapper<R> implements BiConsumer<R, Throwable> {
17+
BiConsumer<R, Throwable> delegate = null;
18+
private static boolean isTransformed = false;
19+
20+
21+
public NRBiConsumerTokenWrapper(BiConsumer<R, Throwable> d) {
22+
delegate = d;
23+
if(!isTransformed) {
24+
isTransformed = true;
25+
AgentBridge.instrumentation.retransformUninstrumentedClass(getClass());
26+
}
27+
}
28+
29+
@Override
30+
@Trace(dispatcher = true)
31+
public void accept(R r, Throwable throwable) {
32+
if(throwable != null) {
33+
NewRelic.noticeError(throwable);
34+
}
35+
if(delegate != null) {
36+
delegate.accept(r, throwable);
37+
}
38+
}
39+
}

instrumentation/micronaut-core-4.0.0/src/main/java/io/micronaut/core/execution/CompletableFutureExecutionFlowImpl_Instrumentation.java

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

instrumentation/micronaut-core-4.0.0/src/main/java/io/micronaut/core/execution/DelayedExecutionFlowImpl_Instrumentation.java

Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.micronaut.core.execution;
2+
3+
import com.newrelic.api.agent.Trace;
4+
import com.newrelic.api.agent.weaver.*;
5+
6+
import java.util.function.BiConsumer;
7+
8+
@Weave(originalName = "io.micronaut.core.execution.ExecutionFlow", type = MatchType.Interface)
9+
public class ExecutionFlow_Instrumentation<T> {
10+
11+
@Trace
12+
public ImperativeExecutionFlow<T> tryComplete() {
13+
return Weaver.callOriginal();
14+
}
15+
16+
@Trace
17+
public void onComplete(BiConsumer<? super T, Throwable> fn) {
18+
Weaver.callOriginal();
19+
}
20+
}

instrumentation/micronaut-core-4.0.0/src/main/java/io/micronaut/core/execution/ImperativeExecutionFlowImpl_Instrumentation.java

Lines changed: 0 additions & 45 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.micronaut.core.propagation;
2+
3+
import com.newrelic.api.agent.weaver.SkipIfPresent;
4+
5+
/**
6+
* Necessary to keep from instrumenting 4.3.0 and higher because instrumentation for 4.3.0 includes
7+
* instrumentation for new functionality
8+
*/
9+
@SkipIfPresent(originalName = "io.micronaut.core.propagation.ThreadContext")
10+
public class ThreadContext_Skip {
11+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
*
3+
* * Copyright 2025 New Relic Corporation. All rights reserved.
4+
* * SPDX-License-Identifier: Apache-2.0
5+
*
6+
*/
7+
8+
package com.nr.agent.instrumentation.micronaut;
9+
10+
import com.newrelic.agent.bridge.AgentBridge;
11+
import com.newrelic.api.agent.NewRelic;
12+
import com.newrelic.api.agent.Token;
13+
import com.newrelic.api.agent.Trace;
14+
15+
import java.util.function.BiConsumer;
16+
17+
public class NRBiConsumerTokenWrapper<R> implements BiConsumer<R, Throwable> {
18+
BiConsumer<R, Throwable> delegate = null;
19+
private static boolean isTransformed = false;
20+
21+
22+
public NRBiConsumerTokenWrapper(BiConsumer<R, Throwable> d) {
23+
delegate = d;
24+
if(!isTransformed) {
25+
isTransformed = true;
26+
AgentBridge.instrumentation.retransformUninstrumentedClass(getClass());
27+
}
28+
}
29+
30+
@Override
31+
@Trace(dispatcher = true)
32+
public void accept(R r, Throwable throwable) {
33+
if(throwable != null) {
34+
NewRelic.noticeError(throwable);
35+
}
36+
if(delegate != null) {
37+
delegate.accept(r, throwable);
38+
}
39+
}
40+
}

instrumentation/micronaut-core-4.3.0/src/main/java/io/micronaut/core/execution/CompletableFutureExecutionFlowImpl_Instrumentation.java

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

instrumentation/micronaut-core-4.3.0/src/main/java/io/micronaut/core/execution/DelayedExecutionFlowImpl_Instrumentation.java

Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.micronaut.core.execution;
2+
3+
import com.newrelic.api.agent.Trace;
4+
import com.newrelic.api.agent.weaver.*;
5+
6+
import java.util.function.BiConsumer;
7+
8+
@Weave(originalName = "io.micronaut.core.execution.ExecutionFlow", type = MatchType.Interface)
9+
public class ExecutionFlow_Instrumentation<T> {
10+
11+
@Trace
12+
public ImperativeExecutionFlow<T> tryComplete() {
13+
return Weaver.callOriginal();
14+
}
15+
16+
@Trace
17+
public T tryCompleteValue() {
18+
return Weaver.callOriginal();
19+
}
20+
21+
@Trace
22+
public Throwable tryCompleteError() {
23+
return Weaver.callOriginal();
24+
}
25+
26+
@Trace
27+
public void onComplete(BiConsumer<? super T, Throwable> fn) {
28+
Weaver.callOriginal();
29+
}
30+
}

0 commit comments

Comments
 (0)