Skip to content

Commit a006d10

Browse files
committed
Add new agentBridge API to report http method to some instr modules
1 parent 23decaa commit a006d10

60 files changed

Lines changed: 222 additions & 52 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.

agent-bridge/src/main/java/com/newrelic/agent/bridge/Agent.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import com.newrelic.api.agent.Logs;
1111
import com.newrelic.api.agent.NewRelic;
12+
import com.newrelic.api.agent.Segment;
1213

1314
/**
1415
* The internal bridge version of the Agent API.
@@ -28,6 +29,12 @@ public interface Agent extends com.newrelic.api.agent.Agent {
2829
@Deprecated
2930
TracedMethod getTracedMethod();
3031

32+
/**
33+
* Reports the HTTP method to a segment's underlying tracer. This should ONLY be used if the segment is reported as an external HTTP trace.
34+
*
35+
*/
36+
void setHttpMethod(Segment segment, String httpMethod);
37+
3138
/**
3239
* Returns the current transaction.
3340
*

agent-bridge/src/main/java/com/newrelic/agent/bridge/NoOpAgent.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.newrelic.api.agent.Logger;
1616
import com.newrelic.api.agent.Logs;
1717
import com.newrelic.api.agent.MetricAggregator;
18+
import com.newrelic.api.agent.Segment;
1819
import com.newrelic.api.agent.TraceMetadata;
1920

2021
import java.util.Collections;
@@ -44,6 +45,11 @@ public TracedMethod getTracedMethod() {
4445
return NoOpTracedMethod.INSTANCE;
4546
}
4647

48+
@Override
49+
public void setHttpMethod(Segment segment, String httpMethod) {
50+
51+
}
52+
4753
@Override
4854
public Transaction getTransaction() {
4955
return NoOpTransaction.INSTANCE;

agent-bridge/src/main/java/com/newrelic/agent/bridge/NoOpTracedMethod.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ public boolean isTrackCallbackRunnable() {
121121
return false;
122122
}
123123

124+
@Override
125+
public void setHttpMethod(String httpVerb) {
126+
127+
}
128+
124129
@Override
125130
public void excludeLeaf() {
126131
}

agent-bridge/src/main/java/com/newrelic/agent/bridge/TracedMethod.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ default String getSpanId() {
128128

129129
public boolean isTrackCallbackRunnable();
130130

131+
/**
132+
* Reports the HTTP method (i.e. GET, POST, PUT, etc). This is added as the span attribute `http.request.method`
133+
*/
134+
void setHttpMethod(String httpVerb);
135+
131136
/**
132137
* Mark a leaf tracer as excluded, similar to how excludeFromTransactionTrace works.
133138
*/

functional_test/src/test/java/com/newrelic/agent/bridge/MockTracer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ public boolean isTrackCallbackRunnable() {
137137
return false;
138138
}
139139

140+
@Override
141+
public void setHttpMethod(String httpVerb) {
142+
143+
}
144+
140145
@Override
141146
public void addOutboundRequestHeaders(OutboundHeaders outboundHeaders) {
142147
}

functional_test/src/test/java/com/newrelic/agent/extension/FakeExtensionAgent.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.newrelic.api.agent.Logger;
1919
import com.newrelic.api.agent.Logs;
2020
import com.newrelic.api.agent.MetricAggregator;
21+
import com.newrelic.api.agent.Segment;
2122
import com.newrelic.api.agent.TraceMetadata;
2223

2324
import java.util.Map;
@@ -62,6 +63,11 @@ public Cloud getCloud() {
6263
@Override
6364
public TracedMethod getTracedMethod() { throw new RuntimeException(); }
6465

66+
@Override
67+
public void setHttpMethod(Segment segment, String httpMethod) {
68+
69+
}
70+
6571
@Override
6672
public Transaction getTransaction() { throw new RuntimeException(); }
6773

instrumentation/akka-http-core-10.0/src/main/scala/com/nr/instrumentation/akkahttpcore/AkkaHttpUtils.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ object AkkaHttpUtils {
3232
.procedure(httpRequest.method.value)
3333
.inboundHeaders(new AkkaHttpInboundHeaders(httpRequest))
3434
.build())
35+
AgentBridge.getAgent().setHttpMethod(segment, httpRequest.method.value);
3536
segment.end()
3637
} catch {
3738
case t: Throwable => AgentBridge.instrumentation.noticeInstrumentationError(t, Weaver.getImplementationTitle)

instrumentation/akka-http-core-10.2.0/src/main/scala/com/nr/instrumentation/akkahttpcore/AkkaHttpUtils.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ object AkkaHttpUtils {
3232
.procedure(httpRequest.method.value)
3333
.inboundHeaders(new AkkaHttpInboundHeaders(httpRequest))
3434
.build())
35+
AgentBridge.getAgent().setHttpMethod(segment, httpRequest.method.value);
3536
segment.end()
3637
} catch {
3738
case t: Throwable => AgentBridge.instrumentation.noticeInstrumentationError(t, Weaver.getImplementationTitle)

instrumentation/akka-http-core-2.13_10.1.8/src/main/scala/com/nr/instrumentation/akkahttpcore/AkkaHttpUtils.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ object AkkaHttpUtils {
3232
.procedure(httpRequest.method.value)
3333
.inboundHeaders(new AkkaHttpInboundHeaders(httpRequest))
3434
.build())
35+
AgentBridge.getAgent().setHttpMethod(segment, httpRequest.method.value)
3536
segment.end()
3637
} catch {
3738
case t: Throwable => AgentBridge.instrumentation.noticeInstrumentationError(t, Weaver.getImplementationTitle)

instrumentation/akka-http-core-2.13_10.2.0/src/main/scala/com/nr/instrumentation/akkahttpcore/AkkaHttpUtils.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ object AkkaHttpUtils {
3232
.procedure(httpRequest.method.value)
3333
.inboundHeaders(new AkkaHttpInboundHeaders(httpRequest))
3434
.build())
35+
AgentBridge.getAgent().setHttpMethod(segment, httpRequest.method.value);
3536
segment.end()
3637
} catch {
3738
case t: Throwable => AgentBridge.instrumentation.noticeInstrumentationError(t, Weaver.getImplementationTitle)

0 commit comments

Comments
 (0)