Skip to content

Commit 6aa285f

Browse files
Migrate AgentBootstrap to environment component (#9072)
1 parent 6f4fc42 commit 6aa285f

File tree

6 files changed

+21
-65
lines changed

6 files changed

+21
-65
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ public final class Constants {
1515
*/
1616
public static final String[] BOOTSTRAP_PACKAGE_PREFIXES = {
1717
"datadog.slf4j",
18+
"datadog.context",
19+
"datadog.environment",
1820
"datadog.json",
1921
"datadog.yaml",
20-
"datadog.context",
2122
"datadog.cli",
2223
"datadog.appsec.api",
2324
"datadog.trace.api",

dd-java-agent/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,8 @@ tasks.withType(GenerateMavenPom).configureEach { task ->
250250

251251
dependencies {
252252
implementation project(path: ':components:json')
253-
implementation project(path: ':components:cli')
253+
// Depend on the bootstrap-specific shadow configuration to avoid having the same component reused by both bootstrap and agent
254+
implementation project(path: ':components:environment', configuration: 'shadow')
254255
modules {
255256
module("com.squareup.okio:okio") {
256257
replacedBy("com.datadoghq.okio:okio") // embed our patched fork
@@ -270,6 +271,7 @@ dependencies {
270271
testImplementation group: 'io.opentracing', name: 'opentracing-util', version: '0.31.0'
271272

272273
// Includes for the top level shadow jar
274+
shadowInclude project(path: ':components:environment', configuration: 'shadow')
273275
shadowInclude project(path: ':dd-java-agent:agent-bootstrap')
274276
shadowInclude project(path: ':dd-java-agent:agent-debugger:debugger-bootstrap')
275277
shadowInclude project(path: ':dd-java-agent:agent-otel:otel-bootstrap', configuration: 'shadow')

dd-java-agent/src/main/java/datadog/trace/bootstrap/AgentBootstrap.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package datadog.trace.bootstrap;
22

3-
import static datadog.trace.bootstrap.SystemUtils.getPropertyOrEnvVar;
43
import static java.nio.charset.StandardCharsets.UTF_8;
54

6-
import datadog.cli.CLIHelper;
5+
import datadog.trace.bootstrap.environment.EnvironmentVariables;
6+
import datadog.trace.bootstrap.environment.JavaVirtualMachine;
7+
import datadog.trace.bootstrap.environment.SystemProperties;
78
import de.thetaphi.forbiddenapis.SuppressForbidden;
89
import java.io.BufferedReader;
910
import java.io.File;
@@ -90,7 +91,7 @@ public static void agentmain(final String agentArgs, final Instrumentation inst)
9091
}
9192

9293
private static BootstrapInitializationTelemetry createInitializationTelemetry() {
93-
String forwarderPath = SystemUtils.tryGetEnv("DD_TELEMETRY_FORWARDER_PATH");
94+
String forwarderPath = EnvironmentVariables.get("DD_TELEMETRY_FORWARDER_PATH");
9495
if (forwarderPath == null) {
9596
return BootstrapInitializationTelemetry.noOpInstance();
9697
}
@@ -100,7 +101,7 @@ private static BootstrapInitializationTelemetry createInitializationTelemetry()
100101
initTelemetry.initMetaInfo("runtime_name", "jvm");
101102
initTelemetry.initMetaInfo("language_name", "jvm");
102103

103-
String javaVersion = SystemUtils.tryGetProperty("java.version");
104+
String javaVersion = SystemProperties.get("java.version");
104105
if (javaVersion != null) {
105106
initTelemetry.initMetaInfo("runtime_version", javaVersion);
106107
initTelemetry.initMetaInfo("language_version", javaVersion);
@@ -163,7 +164,12 @@ static boolean getConfig(String configName) {
163164
return System.getenv(LIB_INJECTION_ENABLED_ENV_VAR) != null;
164165
case LIB_INJECTION_FORCE_SYS_PROP:
165166
{
166-
String injectionForceFlag = getPropertyOrEnvVar(LIB_INJECTION_FORCE_SYS_PROP);
167+
String envVarName =
168+
LIB_INJECTION_FORCE_SYS_PROP.replace('.', '_').replace('-', '_').toUpperCase();
169+
String injectionForceFlag = EnvironmentVariables.get(envVarName);
170+
if (injectionForceFlag == null) {
171+
injectionForceFlag = SystemProperties.get(LIB_INJECTION_FORCE_SYS_PROP);
172+
}
167173
return "true".equalsIgnoreCase(injectionForceFlag) || "1".equals(injectionForceFlag);
168174
}
169175
default:
@@ -172,7 +178,7 @@ static boolean getConfig(String configName) {
172178
}
173179

174180
private static void recordInstrumentationSource(String source) {
175-
SystemUtils.trySetProperty(LIB_INSTRUMENTATION_SOURCE_SYS_PROP, source);
181+
SystemProperties.set(LIB_INSTRUMENTATION_SOURCE_SYS_PROP, source);
176182
}
177183

178184
static boolean exceptionCauseChainContains(Throwable ex, String exClassName) {
@@ -200,7 +206,7 @@ private static boolean alreadyInitialized() {
200206
}
201207

202208
private static boolean isJdkTool() {
203-
String moduleMain = SystemUtils.tryGetProperty("jdk.module.main");
209+
String moduleMain = SystemProperties.get("jdk.module.main");
204210
if (null != moduleMain && !moduleMain.isEmpty() && moduleMain.charAt(0) == 'j') {
205211
switch (moduleMain) {
206212
case "java.base": // keytool
@@ -352,7 +358,7 @@ private static List<File> getAgentFilesFromVMArguments() {
352358
// - On IBM-based JDKs since at least 1.7
353359
// This prevents custom log managers from working correctly
354360
// Use reflection to bypass the loading of the class~
355-
for (final String argument : CLIHelper.getVmArgs()) {
361+
for (final String argument : JavaVirtualMachine.getVmOptions()) {
356362
if (argument.startsWith(JAVA_AGENT_ARGUMENT)) {
357363
int index = argument.indexOf('=', JAVA_AGENT_ARGUMENT.length());
358364
String agentPathname =

dd-java-agent/src/main/java/datadog/trace/bootstrap/SystemUtils.java

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

dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/SpockRunner.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ public class SpockRunner extends JUnitPlatform {
3838
*/
3939
public static final String[] BOOTSTRAP_PACKAGE_PREFIXES_COPY = {
4040
"datadog.slf4j",
41+
"datadog.context",
42+
"datadog.environment",
4143
"datadog.json",
4244
"datadog.yaml",
43-
"datadog.context",
4445
"datadog.cli",
4546
"datadog.appsec.api",
4647
"datadog.trace.api",

gradle/dependencies.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ final class CachedData {
2020
exclude(project(':components:environment'))
2121
exclude(project(':components:json'))
2222
exclude(project(':components:yaml'))
23-
exclude(project(':components:cli'))
2423
exclude(project(':remote-config:remote-config-api'))
2524
exclude(project(':remote-config:remote-config-core'))
2625
exclude(project(':telemetry'))

0 commit comments

Comments
 (0)