Skip to content

Commit 57b379d

Browse files
committed
Use env-entry to add tags per webapp deployment
1 parent 7d4150e commit 57b379d

File tree

27 files changed

+773
-118
lines changed

27 files changed

+773
-118
lines changed

dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleInstrumentation.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.google.auto.service.AutoService;
1010
import datadog.trace.agent.tooling.Instrumenter;
1111
import datadog.trace.agent.tooling.InstrumenterModule;
12-
import datadog.trace.api.naming.ClassloaderServiceNames;
12+
import datadog.trace.api.ClassloaderConfigurationOverrides;
1313
import datadog.trace.bootstrap.AgentClassLoading;
1414
import java.io.IOException;
1515
import java.io.InputStream;
@@ -164,7 +164,8 @@ public static class CaptureModuleNameAdvice {
164164
public static void afterConstruct(@Advice.This final Module module) {
165165
final String name = ModuleNameHelper.extractDeploymentName(module.getClassLoader());
166166
if (name != null && !name.isEmpty()) {
167-
ClassloaderServiceNames.addServiceName(module.getClassLoader(), name);
167+
ClassloaderConfigurationOverrides.addContextualInfo(
168+
module.getClassLoader(), new ClassloaderConfigurationOverrides.ContextualInfo(name));
168169
}
169170
}
170171
}

dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
import com.ibm.wsspi.webcontainer.webapp.IWebAppDispatcherContext;
1717
import datadog.trace.agent.tooling.Instrumenter;
1818
import datadog.trace.agent.tooling.InstrumenterModule;
19+
import datadog.trace.api.ClassloaderConfigurationOverrides;
1920
import datadog.trace.api.Config;
2021
import datadog.trace.api.CorrelationIdentifier;
2122
import datadog.trace.api.GlobalTracer;
2223
import datadog.trace.api.gateway.Flow;
23-
import datadog.trace.api.naming.ClassloaderServiceNames;
2424
import datadog.trace.bootstrap.ActiveSubsystems;
2525
import datadog.trace.bootstrap.ContextStore;
2626
import datadog.trace.bootstrap.InstrumentationContext;
@@ -115,7 +115,7 @@ public static class HandleRequestAdvice {
115115
if (webapp != null) {
116116
final ClassLoader cl = webapp.getClassLoader();
117117
if (cl != null) {
118-
ClassloaderServiceNames.maybeSetToSpan(span, cl);
118+
ClassloaderConfigurationOverrides.maybeEnrichSpan(span, cl);
119119
}
120120
}
121121
}

dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/ThreadContextClassloaderInstrumentation.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.ibm.ws.classloading.internal.ThreadContextClassLoader;
77
import datadog.trace.agent.tooling.Instrumenter;
88
import datadog.trace.agent.tooling.InstrumenterModule;
9-
import datadog.trace.api.naming.ClassloaderServiceNames;
9+
import datadog.trace.api.ClassloaderConfigurationOverrides;
1010
import net.bytebuddy.asm.Advice;
1111

1212
@AutoService(InstrumenterModule.class)
@@ -40,7 +40,8 @@ public static class ThreadContextClassloaderAdvice {
4040
public static void afterConstruct(@Advice.This ThreadContextClassLoader self) {
4141
final String name = BundleNameHelper.extractDeploymentName(self);
4242
if (name != null && !name.isEmpty()) {
43-
ClassloaderServiceNames.addServiceName(self, name);
43+
ClassloaderConfigurationOverrides.addContextualInfo(
44+
self, new ClassloaderConfigurationOverrides.ContextualInfo(name));
4445
}
4546
}
4647
}

dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
import com.ibm.wsspi.webcontainer.webapp.IWebAppDispatcherContext;
1717
import datadog.trace.agent.tooling.Instrumenter;
1818
import datadog.trace.agent.tooling.InstrumenterModule;
19+
import datadog.trace.api.ClassloaderConfigurationOverrides;
1920
import datadog.trace.api.Config;
2021
import datadog.trace.api.CorrelationIdentifier;
2122
import datadog.trace.api.GlobalTracer;
2223
import datadog.trace.api.gateway.Flow;
23-
import datadog.trace.api.naming.ClassloaderServiceNames;
2424
import datadog.trace.bootstrap.ActiveSubsystems;
2525
import datadog.trace.bootstrap.ContextStore;
2626
import datadog.trace.bootstrap.InstrumentationContext;
@@ -117,7 +117,7 @@ public static class HandleRequestAdvice {
117117
if (webapp != null) {
118118
final ClassLoader cl = webapp.getClassLoader();
119119
if (cl != null) {
120-
ClassloaderServiceNames.maybeSetToSpan(span, cl);
120+
ClassloaderConfigurationOverrides.maybeEnrichSpan(span, cl);
121121
}
122122
}
123123
}

dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE;
55
import static datadog.trace.instrumentation.servlet2.Servlet2Decorator.DECORATE;
66

7+
import datadog.trace.api.ClassloaderConfigurationOverrides;
78
import datadog.trace.api.Config;
89
import datadog.trace.api.CorrelationIdentifier;
910
import datadog.trace.api.DDTags;
1011
import datadog.trace.api.GlobalTracer;
1112
import datadog.trace.api.gateway.Flow;
12-
import datadog.trace.api.naming.ClassloaderServiceNames;
1313
import datadog.trace.bootstrap.InstrumentationContext;
1414
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1515
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
@@ -41,7 +41,7 @@ public static boolean onEnter(
4141
final boolean hasServletTrace = spanAttr instanceof AgentSpan;
4242
if (hasServletTrace) {
4343
final AgentSpan span = (AgentSpan) spanAttr;
44-
ClassloaderServiceNames.maybeSetToSpan(span);
44+
ClassloaderConfigurationOverrides.maybeEnrichSpan(span);
4545
// Tracing might already be applied by the FilterChain or a parent request (forward/include).
4646
return false;
4747
}

dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE;
88
import static datadog.trace.instrumentation.servlet3.Servlet3Decorator.DECORATE;
99

10+
import datadog.trace.api.ClassloaderConfigurationOverrides;
1011
import datadog.trace.api.Config;
1112
import datadog.trace.api.CorrelationIdentifier;
1213
import datadog.trace.api.DDTags;
1314
import datadog.trace.api.GlobalTracer;
1415
import datadog.trace.api.gateway.Flow;
15-
import datadog.trace.api.naming.ClassloaderServiceNames;
1616
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1717
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1818
import datadog.trace.instrumentation.servlet.ServletBlockingHelper;
@@ -62,7 +62,7 @@ public static boolean onEnter(
6262
final boolean hasServletTrace = spanAttrValue instanceof AgentSpan;
6363
if (hasServletTrace) {
6464
final AgentSpan span = (AgentSpan) spanAttrValue;
65-
ClassloaderServiceNames.maybeSetToSpan(span);
65+
ClassloaderConfigurationOverrides.maybeEnrichSpan(span);
6666
// Tracing might already be applied by other instrumentation,
6767
// the FilterChain or a parent request (forward/include).
6868
return false;

dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java

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

3-
import datadog.trace.api.naming.ClassloaderServiceNames;
3+
import datadog.trace.api.ClassloaderConfigurationOverrides;
44
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
55
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
66
import datadog.trace.bootstrap.instrumentation.api.URIDataAdapter;
@@ -83,7 +83,7 @@ public AgentSpan onRequest(
8383
final HttpServletRequest request,
8484
AgentSpan.Context.Extracted context) {
8585
assert span != null;
86-
ClassloaderServiceNames.maybeSetToSpan(span);
86+
ClassloaderConfigurationOverrides.maybeEnrichSpan(span);
8787
if (request != null) {
8888
String contextPath = request.getContextPath();
8989
String servletPath = request.getServletPath();

dd-java-agent/instrumentation/servlet/request-5/src/main/java/datadog/trace/instrumentation/servlet5/JakartaServletInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
import com.google.auto.service.AutoService;
1212
import datadog.trace.agent.tooling.Instrumenter;
1313
import datadog.trace.agent.tooling.InstrumenterModule;
14+
import datadog.trace.api.ClassloaderConfigurationOverrides;
1415
import datadog.trace.api.Config;
1516
import datadog.trace.api.DDTags;
16-
import datadog.trace.api.naming.ClassloaderServiceNames;
1717
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
1818
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1919
import jakarta.servlet.ServletRequest;
@@ -61,7 +61,7 @@ public static AgentSpan before(@Advice.Argument(0) final ServletRequest request)
6161
if (span instanceof AgentSpan
6262
&& CallDepthThreadLocalMap.incrementCallDepth(HttpServletRequest.class) == 0) {
6363
final AgentSpan agentSpan = (AgentSpan) span;
64-
ClassloaderServiceNames.maybeSetToSpan(agentSpan);
64+
ClassloaderConfigurationOverrides.maybeEnrichSpan(agentSpan);
6565
return agentSpan;
6666
}
6767
return null;

dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatServer.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import org.apache.catalina.core.StandardHost
55
import org.apache.catalina.startup.Tomcat
66
import org.apache.tomcat.JarScanFilter
77
import org.apache.tomcat.JarScanType
8+
import org.apache.tomcat.util.descriptor.web.ContextEnvironment
89

910
class TomcatServer implements HttpServer {
1011
def port = 0
@@ -38,7 +39,6 @@ class TomcatServer implements HttpServer {
3839
return false
3940
}
4041
}
41-
4242
setupServlets(servletContext)
4343

4444
(server.host as StandardHost).errorReportValveClass = TomcatServletTest.ErrorHandlerValve.name

dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatServletTest.groovy

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.apache.catalina.connector.Request
99
import org.apache.catalina.connector.Response
1010
import org.apache.catalina.startup.Tomcat
1111
import org.apache.catalina.valves.ErrorReportValve
12+
import org.apache.tomcat.util.descriptor.web.ContextEnvironment
1213
import org.apache.tomcat.util.descriptor.web.FilterDef
1314
import org.apache.tomcat.util.descriptor.web.FilterMap
1415

@@ -213,4 +214,32 @@ class TomcatServletClassloaderNamingForkedTest extends TomcatServletTest {
213214
}
214215
}
215216

217+
class TomcatServletEnvEntriesTagTest extends TomcatServletTest {
218+
def addEntry (context, name, value) {
219+
def envEntry = new ContextEnvironment()
220+
envEntry.setName(name)
221+
envEntry.setValue(value)
222+
envEntry.setType("java.lang.String")
223+
context.getNamingResources().addEnvironment(envEntry)
224+
}
225+
@Override
226+
protected void setupServlets(Context context) {
227+
super.setupServlets(context)
228+
addEntry(context, "datadog/tags/custom-tag", "custom-value")
229+
addEntry(context, "java:comp/env/datadog/tags/service", "custom-service")
230+
}
231+
232+
@Override
233+
String expectedServiceName() {
234+
"custom-service"
235+
}
236+
237+
@Override
238+
Map<String, Serializable> expectedExtraServerTags(ServerEndpoint endpoint) {
239+
super.expectedExtraServerTags(endpoint) + ["custom-tag": "custom-value"] as Map<String, Serializable>
240+
}
241+
}
242+
243+
244+
216245

0 commit comments

Comments
 (0)