Skip to content

Commit 8e89900

Browse files
committed
feat(environment): Migrate agent bootstrap from cli to environment
1 parent b485504 commit 8e89900

File tree

8 files changed

+21
-69
lines changed

8 files changed

+21
-69
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +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",
21-
"datadog.cli",
2222
"datadog.appsec.api",
2323
"datadog.trace.api",
2424
"datadog.trace.bootstrap",

dd-java-agent/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ tasks.withType(GenerateMavenPom).configureEach { task ->
240240

241241
dependencies {
242242
implementation project(path: ':components:json')
243-
implementation project(path: ':components:cli')
243+
implementation project(path: ':components:environment')
244244
modules {
245245
module("com.squareup.okio:okio") {
246246
replacedBy("com.datadoghq.okio:okio") // embed our patched fork

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.environment.EnvironmentVariables;
6+
import datadog.environment.JavaVirtualMachine;
7+
import datadog.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 & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +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",
44-
"datadog.cli",
4545
"datadog.appsec.api",
4646
"datadog.trace.api",
4747
"datadog.trace.bootstrap",

gradle/dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ final class CachedData {
1717
exclude(project(':internal-api:internal-api-9'))
1818
exclude(project(':communication'))
1919
exclude(project(':components:context'))
20+
exclude(project(':components:environment'))
2021
exclude(project(':components:json'))
2122
exclude(project(':components:yaml'))
22-
exclude(project(':components:cli'))
2323
exclude(project(':remote-config:remote-config-api'))
2424
exclude(project(':remote-config:remote-config-core'))
2525
exclude(project(':telemetry'))

internal-api/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,8 @@ dependencies {
244244
api project(':dd-trace-api')
245245
api libs.slf4j
246246
api project(':components:context')
247+
api project(':components:environment')
247248
api project(':components:yaml')
248-
api project(':components:cli')
249249
api project(":utils:time-utils")
250250

251251
// has to be loaded by system classloader:

settings.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ include ':dd-java-agent:agent-otel:otel-shim'
8686
include ':dd-java-agent:agent-otel:otel-tooling'
8787

8888
include ':communication'
89-
include ':components:cli'
9089
include ':components:context'
9190
include ':components:environment'
9291
include ':components:json'

0 commit comments

Comments
 (0)