Skip to content

Commit a575317

Browse files
committed
update only parent span
1 parent a6a61be commit a575317

8 files changed

Lines changed: 28 additions & 72 deletions

File tree

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/src/main/java/datadog/trace/instrumentation/vertx_3_4/server/RouteHandlerWrapper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,9 @@ public void handle(final RoutingContext routingContext) {
6262

6363
private void setRoute(RoutingContext routingContext) {
6464
final AgentSpan parentSpan = routingContext.get(PARENT_SPAN_CONTEXT_KEY);
65-
final AgentSpan handlerSpan = routingContext.get(HANDLER_SPAN_CONTEXT_KEY);
66-
if (parentSpan == null && handlerSpan == null) {
65+
if (parentSpan == null) {
6766
return;
6867
}
69-
updateRouteFromContext(routingContext, parentSpan, handlerSpan);
68+
updateRouteFromContext(routingContext, parentSpan);
7069
}
7170
}

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/src/main/java/datadog/trace/instrumentation/vertx_3_4/server/RouteMatchesAdvice.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package datadog.trace.instrumentation.vertx_3_4.server;
22

3-
import static datadog.trace.instrumentation.vertx_3_4.server.RouteUpdateHelper.HANDLER_SPAN_CONTEXT_KEY;
43
import static datadog.trace.instrumentation.vertx_3_4.server.RouteUpdateHelper.PARENT_SPAN_CONTEXT_KEY;
54
import static datadog.trace.instrumentation.vertx_3_4.server.RouteUpdateHelper.updateRouteFromContext;
65

@@ -22,8 +21,7 @@ static void after(
2221
return;
2322
}
2423
final AgentSpan parentSpan = ctx.get(PARENT_SPAN_CONTEXT_KEY);
25-
final AgentSpan handlerSpan = ctx.get(HANDLER_SPAN_CONTEXT_KEY);
26-
updateRouteFromContext(ctx, parentSpan, handlerSpan);
24+
updateRouteFromContext(ctx, parentSpan);
2725

2826
final Map<String, String> params = ctx.pathParams();
2927
if (params.isEmpty()) {
@@ -43,8 +41,7 @@ static void after(
4341
return;
4442
}
4543
final AgentSpan parentSpan = ctx.get(PARENT_SPAN_CONTEXT_KEY);
46-
final AgentSpan handlerSpan = ctx.get(HANDLER_SPAN_CONTEXT_KEY);
47-
updateRouteFromContext(ctx, parentSpan, handlerSpan);
44+
updateRouteFromContext(ctx, parentSpan);
4845

4946
final Map<String, String> params = ctx.pathParams();
5047
if (params.isEmpty()) {

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/src/main/java/datadog/trace/instrumentation/vertx_3_4/server/RouteUpdateHelper.java

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import static datadog.trace.bootstrap.instrumentation.decorator.http.HttpResourceDecorator.HTTP_RESOURCE_DECORATOR;
44

55
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
6-
import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities;
76
import datadog.trace.bootstrap.instrumentation.api.Tags;
87
import io.vertx.ext.web.RoutingContext;
98

@@ -18,30 +17,23 @@ public static void updateRoute(
1817
final RoutingContext routingContext,
1918
final String method,
2019
final String path,
21-
final AgentSpan parentSpan,
22-
final AgentSpan handlerSpan) {
20+
final AgentSpan parentSpan) {
2321
if (method == null || path == null) {
2422
return;
2523
}
26-
if (!shouldUpdateRoute(routingContext, parentSpan, handlerSpan, path)) {
24+
if (!shouldUpdateRoute(routingContext, parentSpan, path)) {
2725
return;
2826
}
2927

3028
routingContext.put(ROUTE_CONTEXT_KEY, path);
3129
if (parentSpan != null) {
3230
HTTP_RESOURCE_DECORATOR.withRoute(parentSpan, method, path, true);
3331
}
34-
if (handlerSpan != null
35-
&& handlerSpan.getResourceNamePriority() < ResourceNamePriorities.HTTP_FRAMEWORK_ROUTE) {
36-
HTTP_RESOURCE_DECORATOR.withRoute(handlerSpan, method, path, true);
37-
}
3832
}
3933

4034
public static void updateRouteFromContext(
41-
final RoutingContext routingContext,
42-
final AgentSpan parentSpan,
43-
final AgentSpan handlerSpan) {
44-
if (parentSpan == null && handlerSpan == null) {
35+
final RoutingContext routingContext, final AgentSpan parentSpan) {
36+
if (parentSpan == null) {
4537
return;
4638
}
4739
if (routingContext.currentRoute() == null) {
@@ -60,14 +52,11 @@ public static void updateRouteFromContext(
6052
}
6153
path = mountPoint + path;
6254
}
63-
updateRoute(routingContext, method, path, parentSpan, handlerSpan);
55+
updateRoute(routingContext, method, path, parentSpan);
6456
}
6557

6658
private static boolean shouldUpdateRoute(
67-
final RoutingContext routingContext,
68-
final AgentSpan parentSpan,
69-
final AgentSpan handlerSpan,
70-
final String path) {
59+
final RoutingContext routingContext, final AgentSpan parentSpan, final String path) {
7160
final String currentRoute = routingContext.get(ROUTE_CONTEXT_KEY);
7261
if (currentRoute != null && currentRoute.equals(path)) {
7362
return false;
@@ -76,7 +65,7 @@ private static boolean shouldUpdateRoute(
7665
if (!path.equals("/")) {
7766
return true;
7867
}
79-
return !hasHttpRoute(parentSpan) && !hasHttpRoute(handlerSpan);
68+
return !hasHttpRoute(parentSpan);
8069
}
8170

8271
public static boolean hasHttpRoute(final AgentSpan span) {

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/src/test/groovy/server/RouteHandlerWrapperTest.groovy

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,40 +8,33 @@ import io.vertx.ext.web.RoutingContext
88

99
class RouteHandlerWrapperTest extends InstrumentationSpecification {
1010

11-
void "updateRoute writes route to both spans"() {
11+
void "updateRoute writes route to parent span"() {
1212
given:
1313
def context = Mock(RoutingContext)
1414
def parentSpan = Mock(AgentSpan)
15-
def handlerSpan = Mock(AgentSpan)
1615

1716
when:
18-
RouteUpdateHelper.updateRoute(
19-
context, "GET", "/items/:id", parentSpan, handlerSpan)
17+
RouteUpdateHelper.updateRoute(context, "GET", "/items/:id", parentSpan)
2018

2119
then:
2220
1 * context.get("dd.${Tags.HTTP_ROUTE}") >> null
2321
1 * context.put("dd.${Tags.HTTP_ROUTE}", "/items/:id")
2422
1 * parentSpan.setTag(Tags.HTTP_ROUTE, "/items/:id")
25-
1 * handlerSpan.getResourceNamePriority() >> Byte.MIN_VALUE
26-
1 * handlerSpan.setTag(Tags.HTTP_ROUTE, "/items/:id")
2723
0 * _
2824
}
2925

3026
void "updateRoute does not replace root route when one exists"() {
3127
given:
3228
def context = Mock(RoutingContext)
3329
def parentSpan = Mock(AgentSpan)
34-
def handlerSpan = Mock(AgentSpan)
3530

3631
when:
37-
RouteUpdateHelper.updateRoute(context, "GET", "/", parentSpan, handlerSpan)
32+
RouteUpdateHelper.updateRoute(context, "GET", "/", parentSpan)
3833

3934
then:
4035
1 * context.get("dd.${Tags.HTTP_ROUTE}") >> null
4136
1 * parentSpan.getTag(Tags.HTTP_ROUTE) >> "/existing"
42-
1 * handlerSpan.getTag(Tags.HTTP_ROUTE) >> "/existing"
4337
0 * context.put(_, _)
4438
0 * parentSpan.setTag(_, _)
45-
0 * handlerSpan.setTag(_, _)
4639
}
4740
}

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-4.0/src/main/java/datadog/trace/instrumentation/vertx_4_0/server/RouteHandlerWrapper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,9 @@ public void handle(final RoutingContext routingContext) {
5959

6060
private void setRoute(RoutingContext routingContext) {
6161
final AgentSpan parentSpan = routingContext.get(PARENT_SPAN_CONTEXT_KEY);
62-
final AgentSpan handlerSpan = routingContext.get(HANDLER_SPAN_CONTEXT_KEY);
63-
if (parentSpan == null && handlerSpan == null) {
62+
if (parentSpan == null) {
6463
return;
6564
}
66-
updateRouteFromContext(routingContext, parentSpan, handlerSpan);
65+
updateRouteFromContext(routingContext, parentSpan);
6766
}
6867
}

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-4.0/src/main/java/datadog/trace/instrumentation/vertx_4_0/server/RouteMatchesAdvice.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package datadog.trace.instrumentation.vertx_4_0.server;
22

3-
import static datadog.trace.instrumentation.vertx_4_0.server.RouteUpdateHelper.HANDLER_SPAN_CONTEXT_KEY;
43
import static datadog.trace.instrumentation.vertx_4_0.server.RouteUpdateHelper.PARENT_SPAN_CONTEXT_KEY;
54
import static datadog.trace.instrumentation.vertx_4_0.server.RouteUpdateHelper.updateRouteFromContext;
65

@@ -22,8 +21,7 @@ static void after(
2221
return;
2322
}
2423
final AgentSpan parentSpan = ctx.get(PARENT_SPAN_CONTEXT_KEY);
25-
final AgentSpan handlerSpan = ctx.get(HANDLER_SPAN_CONTEXT_KEY);
26-
updateRouteFromContext(ctx, parentSpan, handlerSpan);
24+
updateRouteFromContext(ctx, parentSpan);
2725

2826
final Map<String, String> params = ctx.pathParams();
2927
if (params.isEmpty()) {
@@ -47,8 +45,7 @@ static void after(
4745
return;
4846
}
4947
final AgentSpan parentSpan = ctx.get(PARENT_SPAN_CONTEXT_KEY);
50-
final AgentSpan handlerSpan = ctx.get(HANDLER_SPAN_CONTEXT_KEY);
51-
updateRouteFromContext(ctx, parentSpan, handlerSpan);
48+
updateRouteFromContext(ctx, parentSpan);
5249

5350
final Map<String, String> params = ctx.pathParams();
5451
if (params.isEmpty()) {

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-4.0/src/main/java/datadog/trace/instrumentation/vertx_4_0/server/RouteUpdateHelper.java

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import static datadog.trace.bootstrap.instrumentation.decorator.http.HttpResourceDecorator.HTTP_RESOURCE_DECORATOR;
44

55
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
6-
import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities;
76
import datadog.trace.bootstrap.instrumentation.api.Tags;
87
import io.vertx.ext.web.RoutingContext;
98

@@ -18,30 +17,23 @@ public static void updateRoute(
1817
final RoutingContext routingContext,
1918
final String method,
2019
final String path,
21-
final AgentSpan parentSpan,
22-
final AgentSpan handlerSpan) {
20+
final AgentSpan parentSpan) {
2321
if (method == null || path == null) {
2422
return;
2523
}
26-
if (!shouldUpdateRoute(routingContext, parentSpan, handlerSpan, path)) {
24+
if (!shouldUpdateRoute(routingContext, parentSpan, path)) {
2725
return;
2826
}
2927

3028
routingContext.put(ROUTE_CONTEXT_KEY, path);
3129
if (parentSpan != null) {
3230
HTTP_RESOURCE_DECORATOR.withRoute(parentSpan, method, path, true);
3331
}
34-
if (handlerSpan != null
35-
&& handlerSpan.getResourceNamePriority() < ResourceNamePriorities.HTTP_FRAMEWORK_ROUTE) {
36-
HTTP_RESOURCE_DECORATOR.withRoute(handlerSpan, method, path, true);
37-
}
3832
}
3933

4034
public static void updateRouteFromContext(
41-
final RoutingContext routingContext,
42-
final AgentSpan parentSpan,
43-
final AgentSpan handlerSpan) {
44-
if (parentSpan == null && handlerSpan == null) {
35+
final RoutingContext routingContext, final AgentSpan parentSpan) {
36+
if (parentSpan == null) {
4537
return;
4638
}
4739
if (routingContext.currentRoute() == null) {
@@ -62,14 +54,11 @@ public static void updateRouteFromContext(
6254
: mountPoint;
6355
path = noBackslashhMountPoint + path;
6456
}
65-
updateRoute(routingContext, method, path, parentSpan, handlerSpan);
57+
updateRoute(routingContext, method, path, parentSpan);
6658
}
6759

6860
private static boolean shouldUpdateRoute(
69-
final RoutingContext routingContext,
70-
final AgentSpan parentSpan,
71-
final AgentSpan handlerSpan,
72-
final String path) {
61+
final RoutingContext routingContext, final AgentSpan parentSpan, final String path) {
7362
final String currentRoute = routingContext.get(ROUTE_CONTEXT_KEY);
7463
if (currentRoute != null && currentRoute.equals(path)) {
7564
return false;
@@ -78,7 +67,7 @@ private static boolean shouldUpdateRoute(
7867
if (!path.equals("/")) {
7968
return true;
8069
}
81-
return !hasHttpRoute(parentSpan) && !hasHttpRoute(handlerSpan);
70+
return !hasHttpRoute(parentSpan);
8271
}
8372

8473
public static boolean hasHttpRoute(final AgentSpan span) {

dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-4.0/src/test/groovy/server/RouteHandlerWrapperTest.groovy

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,40 +8,33 @@ import io.vertx.ext.web.RoutingContext
88

99
class RouteHandlerWrapperTest extends InstrumentationSpecification {
1010

11-
void "updateRoute writes route to both spans"() {
11+
void "updateRoute writes route to parent span"() {
1212
given:
1313
def context = Mock(RoutingContext)
1414
def parentSpan = Mock(AgentSpan)
15-
def handlerSpan = Mock(AgentSpan)
1615

1716
when:
18-
RouteUpdateHelper.updateRoute(
19-
context, "GET", "/items/:id", parentSpan, handlerSpan)
17+
RouteUpdateHelper.updateRoute(context, "GET", "/items/:id", parentSpan)
2018

2119
then:
2220
1 * context.get("dd.${Tags.HTTP_ROUTE}") >> null
2321
1 * context.put("dd.${Tags.HTTP_ROUTE}", "/items/:id")
2422
1 * parentSpan.setTag(Tags.HTTP_ROUTE, "/items/:id")
25-
1 * handlerSpan.getResourceNamePriority() >> Byte.MIN_VALUE
26-
1 * handlerSpan.setTag(Tags.HTTP_ROUTE, "/items/:id")
2723
0 * _
2824
}
2925

3026
void "updateRoute does not replace root route when one exists"() {
3127
given:
3228
def context = Mock(RoutingContext)
3329
def parentSpan = Mock(AgentSpan)
34-
def handlerSpan = Mock(AgentSpan)
3530

3631
when:
37-
RouteUpdateHelper.updateRoute(context, "GET", "/", parentSpan, handlerSpan)
32+
RouteUpdateHelper.updateRoute(context, "GET", "/", parentSpan)
3833

3934
then:
4035
1 * context.get("dd.${Tags.HTTP_ROUTE}") >> null
4136
1 * parentSpan.getTag(Tags.HTTP_ROUTE) >> "/existing"
42-
1 * handlerSpan.getTag(Tags.HTTP_ROUTE) >> "/existing"
4337
0 * context.put(_, _)
4438
0 * parentSpan.setTag(_, _)
45-
0 * handlerSpan.setTag(_, _)
4639
}
4740
}

0 commit comments

Comments
 (0)