generated from newrelic-experimental/java-instrumentation-template
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: added suppport fpr v 4.4 and above
- Loading branch information
1 parent
c8ca6ee
commit 7607696
Showing
21 changed files
with
707 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
|
||
// Build.gradle generated for instrumentation module micronaut-http-netty-2 | ||
|
||
apply plugin: 'java' | ||
|
||
targetCompatibility=JavaVersion.VERSION_17 | ||
|
||
dependencies { | ||
implementation 'io.micronaut:micronaut-http-server-netty:4.4.0' | ||
implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.5.11' | ||
|
||
// New Relic Java Agent dependencies | ||
implementation 'com.newrelic.agent.java:newrelic-agent:7.4.0' | ||
implementation 'com.newrelic.agent.java:newrelic-api:7.4.0' | ||
implementation fileTree(include: ['*.jar'], dir: '../libs') | ||
implementation fileTree(include: ['*.jar'], dir: '../test-lib') | ||
} | ||
|
||
jar { | ||
manifest { | ||
attributes 'Implementation-Title': 'com.newrelic.instrumentation.labs.micronaut-http-server-netty-4.4' | ||
attributes 'Implementation-Vendor': 'New Relic Labs' | ||
attributes 'Implementation-Vendor-Id': 'com.newrelic.labs' | ||
attributes 'Implementation-Version': 1.0 | ||
} | ||
} | ||
|
||
verifyInstrumentation { | ||
passes 'io.micronaut:micronaut-http-server-netty:[4.4.0,4.5.0)' | ||
excludeRegex '.*RC.' | ||
excludeRegex '.*M.' | ||
} |
40 changes: 40 additions & 0 deletions
40
....4/src/main/java/com/newrelic/instrumentation/micronaut/netty_44/NRBiConsumerWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package com.newrelic.instrumentation.micronaut.netty_44; | ||
|
||
import java.util.function.BiConsumer; | ||
|
||
import com.newrelic.agent.bridge.AgentBridge; | ||
import com.newrelic.api.agent.NewRelic; | ||
import com.newrelic.api.agent.Token; | ||
import com.newrelic.api.agent.Trace; | ||
|
||
public class NRBiConsumerWrapper<R> implements BiConsumer<R, Throwable> { | ||
|
||
BiConsumer<R, Throwable> delegate = null; | ||
private Token token = null; | ||
private static boolean isTransformed = false; | ||
|
||
public NRBiConsumerWrapper(BiConsumer<R, Throwable> d, Token t) { | ||
delegate = d; | ||
token = t; | ||
if(!isTransformed) { | ||
AgentBridge.instrumentation.retransformUninstrumentedClass(getClass()); | ||
isTransformed = true; | ||
} | ||
} | ||
|
||
@Override | ||
@Trace(async = true) | ||
public void accept(R t, Throwable u) { | ||
if(token != null) { | ||
token.linkAndExpire(); | ||
token = null; | ||
} | ||
if(u != null) { | ||
NewRelic.noticeError(u); | ||
} | ||
if(delegate != null) { | ||
delegate.accept(t, u); | ||
} | ||
} | ||
|
||
} |
46 changes: 46 additions & 0 deletions
46
...server-netty-4.4/src/main/java/com/newrelic/instrumentation/micronaut/netty_44/Utils.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package com.newrelic.instrumentation.micronaut.netty_44; | ||
|
||
import java.util.Map; | ||
|
||
import io.micronaut.web.router.RouteMatch; | ||
|
||
public class Utils { | ||
|
||
public static void decorateWithRoute(RouteMatch<?> routeMatch) { | ||
// TracedMethod traced = NewRelic.getAgent().getTracedMethod(); | ||
// if(routeMatch instanceof BasicObjectRouteMatch) { | ||
// BasicObjectRouteMatch objMatch = (BasicObjectRouteMatch)routeMatch; | ||
// Class<?> declaringClass = objMatch.getDeclaringType(); | ||
// traced.setMetricName("Custom","Micronaut","Netty","Route","Object", declaringClass.getSimpleName()); | ||
// traced.addCustomAttribute("Declaring-Class", declaringClass.getName()); | ||
// } else if(routeMatch instanceof UriRouteMatch) { | ||
// UriRouteMatch<?,?> uriRouteMatch = (UriRouteMatch<?, ?>)routeMatch; | ||
// | ||
// | ||
// | ||
// String uri = uriRouteMatch.getUri(); | ||
// UriMatchTemplate matchTemplate = uriRouteMatch.getRoute().getUriMatchTemplate(); | ||
// String pathString = matchTemplate != null ? matchTemplate.toPathString() : null; | ||
// | ||
// String uriTemplate = uriRouteMatch.toString(); | ||
// String methodName = uriRouteMatch.getMethodName(); | ||
// String name = uriRouteMatch.getName(); | ||
// | ||
// HashMap<String, Object> attributes = new HashMap<String, Object>(); | ||
// addAttribute(attributes, "PathString", pathString); | ||
// addAttribute(attributes, "Method-Name", methodName); | ||
// addAttribute(attributes, "URI", uri); | ||
// addAttribute(attributes, "URITemplate", uriTemplate); | ||
// addAttribute(attributes, "Name", name); | ||
// traced.addCustomAttributes(attributes); | ||
// | ||
// traced.setMetricName("Custom","Micronaut","Netty","Route","URI"); | ||
// } | ||
} | ||
|
||
public static void addAttribute(Map<String, Object> attributes, String key, Object value) { | ||
if(attributes != null && key != null && !key.isEmpty() && value != null) { | ||
attributes.put(key, value); | ||
} | ||
} | ||
} |
39 changes: 39 additions & 0 deletions
39
...etty-4.4/src/main/java/io/micronaut/http/reactive/execution/ReactorExecutionFlowImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package io.micronaut.http.reactive.execution; | ||
|
||
import java.util.function.BiConsumer; | ||
|
||
import org.reactivestreams.Publisher; | ||
|
||
import com.newrelic.api.agent.Token; | ||
import com.newrelic.api.agent.Trace; | ||
import com.newrelic.api.agent.weaver.NewField; | ||
import com.newrelic.api.agent.weaver.Weave; | ||
import com.newrelic.api.agent.weaver.Weaver; | ||
import com.newrelic.instrumentation.micronaut.netty_44.NRBiConsumerWrapper; | ||
|
||
import reactor.core.publisher.Mono; | ||
|
||
@Weave | ||
abstract class ReactorExecutionFlowImpl { | ||
|
||
@NewField | ||
protected Token token = null; | ||
|
||
<K> ReactorExecutionFlowImpl(Publisher<K> value) { | ||
} | ||
|
||
<K> ReactorExecutionFlowImpl(Mono<K> value) { | ||
} | ||
|
||
@SuppressWarnings({ "rawtypes", "unchecked" }) | ||
@Trace(async = true) | ||
public void onComplete(BiConsumer<? super Object, Throwable> fn) { | ||
if(token != null) { | ||
token.link(); | ||
NRBiConsumerWrapper wrapper = new NRBiConsumerWrapper(fn, token); | ||
token = null; | ||
fn = wrapper; | ||
} | ||
Weaver.callOriginal(); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
...-netty-4.4/src/main/java/io/micronaut/http/server/netty/AbstractHttpContentProcessor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package io.micronaut.http.server.netty; | ||
|
||
import java.util.Collection; | ||
|
||
import com.newrelic.api.agent.Trace; | ||
import com.newrelic.api.agent.weaver.MatchType; | ||
import com.newrelic.api.agent.weaver.Weave; | ||
|
||
import io.netty.buffer.ByteBufHolder; | ||
|
||
@Weave(type=MatchType.BaseClass) | ||
public abstract class AbstractHttpContentProcessor<T> { | ||
|
||
@Trace(dispatcher = true) | ||
protected abstract void onData(ByteBufHolder message, Collection<Object> out); | ||
} |
19 changes: 19 additions & 0 deletions
19
...-server-netty-4.4/src/main/java/io/micronaut/http/server/netty/RoutingInBoundHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package io.micronaut.http.server.netty; | ||
|
||
import com.newrelic.api.agent.Trace; | ||
import com.newrelic.api.agent.weaver.Weave; | ||
import com.newrelic.api.agent.weaver.Weaver; | ||
|
||
import io.micronaut.http.server.netty.body.ByteBody; | ||
import io.micronaut.http.server.netty.handler.OutboundAccess; | ||
import io.micronaut.http.server.netty.handler.PipeliningServerHandler; | ||
import io.netty.channel.ChannelHandlerContext; | ||
|
||
@Weave | ||
public abstract class RoutingInBoundHandler { | ||
|
||
@Trace(dispatcher = true) | ||
public void accept(ChannelHandlerContext ctx, io.netty.handler.codec.http.HttpRequest request, ByteBody body, OutboundAccess outboundAccess) { | ||
Weaver.callOriginal(); | ||
} | ||
} |
119 changes: 119 additions & 0 deletions
119
...tty-4.4/src/main/java/io/micronaut/http/server/netty/handler/PipeliningServerHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
package io.micronaut.http.server.netty.handler; | ||
|
||
import com.newrelic.api.agent.NewRelic; | ||
import com.newrelic.api.agent.Trace; | ||
import com.newrelic.api.agent.weaver.MatchType; | ||
import com.newrelic.api.agent.weaver.Weave; | ||
import com.newrelic.api.agent.weaver.Weaver; | ||
|
||
import io.netty.channel.ChannelHandlerContext; | ||
|
||
@Weave | ||
public abstract class PipeliningServerHandler { | ||
|
||
@Trace(dispatcher = true) | ||
public void channelRead(ChannelHandlerContext ctx, Object msg) { | ||
Weaver.callOriginal(); | ||
} | ||
|
||
@Weave | ||
private static class MessageInboundHandler { | ||
|
||
@Trace | ||
void read(Object message) { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","InboundHander","MessageInboundHandler","read"); | ||
Weaver.callOriginal(); | ||
} | ||
|
||
} | ||
|
||
@Weave | ||
private static class DecompressingInboundHandler { | ||
|
||
@Trace | ||
void read(Object message) { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","InboundHander","DecompressingInboundHandler","read"); | ||
Weaver.callOriginal(); | ||
} | ||
|
||
} | ||
|
||
@Weave | ||
private static class OptimisticBufferingInboundHandler { | ||
|
||
@Trace | ||
void read(Object message) { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","InboundHander","OptimisticBufferingInboundHandler","read"); | ||
Weaver.callOriginal(); | ||
} | ||
|
||
} | ||
|
||
@Weave | ||
private static class DroppingInboundHandler { | ||
|
||
@Trace | ||
void read(Object message) { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","InboundHander","DroppingInboundHandler","read"); | ||
Weaver.callOriginal(); | ||
} | ||
|
||
} | ||
|
||
@Weave | ||
private static class StreamingInboundHandler { | ||
|
||
@Trace | ||
void read(Object message) { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","InboundHander","StreamingInboundHandler","read"); | ||
Weaver.callOriginal(); | ||
} | ||
|
||
} | ||
|
||
@Weave | ||
private static class BlockingOutboundHandler { | ||
|
||
@Trace | ||
void writeSome() { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","OutboundHander","BlockingOutboundHandler","writeSome"); | ||
Weaver.callOriginal(); | ||
} | ||
} | ||
|
||
@Weave | ||
private static class ContinueOutboundHandler { | ||
|
||
@Trace | ||
void writeSome() { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","OutboundHander","ContinueOutboundHandler","writeSome"); | ||
Weaver.callOriginal(); | ||
} | ||
} | ||
|
||
@Weave | ||
private static class FullOutboundHandler { | ||
|
||
@Trace | ||
void writeSome() { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","OutboundHander","FullOutboundHandler","writeSome"); | ||
Weaver.callOriginal(); | ||
} | ||
} | ||
|
||
@Weave | ||
private static class StreamingOutboundHandler { | ||
|
||
@Trace | ||
void writeSome() { | ||
NewRelic.getAgent().getTracedMethod().setMetricName("Custom","Micronaut","HTTP","Netty","OutboundHander","StreamingOutboundHandler","writeSome"); | ||
Weaver.callOriginal(); | ||
} | ||
} | ||
|
||
@Weave | ||
public static class OutboundAccessImpl { | ||
|
||
} | ||
|
||
} |
16 changes: 16 additions & 0 deletions
16
...4/src/main/java/io/micronaut/http/server/netty/websocket/NettyServerWebSocketHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package io.micronaut.http.server.netty.websocket; | ||
|
||
import com.newrelic.api.agent.Trace; | ||
import com.newrelic.api.agent.weaver.Weave; | ||
import com.newrelic.api.agent.weaver.Weaver; | ||
|
||
import io.netty.channel.ChannelHandlerContext; | ||
|
||
@Weave | ||
public abstract class NettyServerWebSocketHandler { | ||
|
||
@Trace(dispatcher = true) | ||
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { | ||
Weaver.callOriginal(); | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
...ain/java/io/micronaut/http/server/netty/websocket/NettyServerWebSocketUpgradeHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package io.micronaut.http.server.netty.websocket; | ||
|
||
import com.newrelic.api.agent.Trace; | ||
import com.newrelic.api.agent.weaver.Weave; | ||
import com.newrelic.api.agent.weaver.Weaver; | ||
|
||
import io.micronaut.http.server.netty.body.ByteBody; | ||
import io.micronaut.http.server.netty.handler.OutboundAccess; | ||
import io.netty.channel.ChannelHandlerContext; | ||
|
||
@Weave | ||
public abstract class NettyServerWebSocketUpgradeHandler { | ||
|
||
@Trace(dispatcher = true) | ||
public void accept(ChannelHandlerContext ctx, io.netty.handler.codec.http.HttpRequest request, ByteBody body, OutboundAccess outboundAccess) { | ||
Weaver.callOriginal(); | ||
} | ||
|
||
} |
14 changes: 14 additions & 0 deletions
14
...http-server-netty-4.4/src/main/java/io/netty/channel/ChannelPipeline_Instrumentation.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package io.netty.channel; | ||
|
||
import com.newrelic.api.agent.Token; | ||
import com.newrelic.api.agent.weaver.MatchType; | ||
import com.newrelic.api.agent.weaver.NewField; | ||
import com.newrelic.api.agent.weaver.Weave; | ||
|
||
@Weave(type = MatchType.BaseClass, originalName = "io.netty.channel.ChannelPipeline") | ||
public class ChannelPipeline_Instrumentation { | ||
|
||
@NewField | ||
public Token micronautToken; | ||
|
||
} |
Oops, something went wrong.