Skip to content

Commit 15176df

Browse files
Migrate products and instrumentations to environment component (#9290)
* feat(civis): Migrate CI Visibility to environment component * feat(env): Migrate communication to environment component * feat(env): Migrate crash tracking to environment component * feat(env): Migrate debugger to environment component * feat(env): Migrate jmxfetch to environment component * feat(env): Migrate logging to environment component * feat(env): Migrate profiling to environment component * feat(env): Migrate security libraries to environment component * feat(env): Migrate intrumentations to environment component
1 parent 769f897 commit 15176df

File tree

34 files changed

+137
-85
lines changed

34 files changed

+137
-85
lines changed

communication/src/main/java/datadog/communication/http/OkHttpUtils.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import datadog.common.container.ContainerInfo;
88
import datadog.common.socket.NamedPipeSocketFactory;
99
import datadog.common.socket.UnixDomainSocketFactory;
10+
import datadog.environment.SystemProperties;
1011
import datadog.trace.api.Config;
1112
import datadog.trace.util.AgentProxySelector;
1213
import java.io.File;
@@ -49,9 +50,12 @@ public final class OkHttpUtils {
4950

5051
private static final String DD_API_KEY = "DD-API-KEY";
5152

52-
private static final String JAVA_VERSION = System.getProperty("java.version", "unknown");
53-
private static final String JAVA_VM_NAME = System.getProperty("java.vm.name", "unknown");
54-
private static final String JAVA_VM_VENDOR = System.getProperty("java.vm.vendor", "unknown");
53+
private static final String JAVA_VERSION =
54+
SystemProperties.getOrDefault("java.version", "unknown");
55+
private static final String JAVA_VM_NAME =
56+
SystemProperties.getOrDefault("java.vm.name", "unknown");
57+
private static final String JAVA_VM_VENDOR =
58+
SystemProperties.getOrDefault("java.vm.vendor", "unknown");
5559

5660
public static OkHttpClient buildHttpClient(final HttpUrl url, final long timeoutMillis) {
5761
return buildHttpClient(url, null, null, timeoutMillis);

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/CiVisibilityServices.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,17 +144,17 @@ private static GitClient.Factory buildGitClientFactory(
144144

145145
@Nonnull
146146
private static CiEnvironment buildCiEnvironment(Config config, SharedCommunicationObjects sco) {
147+
CiEnvironment localEnvironment = CiEnvironmentImpl.local();
147148
String remoteEnvVarsProviderUrl = config.getCiVisibilityRemoteEnvVarsProviderUrl();
148149
if (remoteEnvVarsProviderUrl != null) {
149150
String remoteEnvVarsProviderKey = config.getCiVisibilityRemoteEnvVarsProviderKey();
150151
CiEnvironment remoteEnvironment =
151152
new CiEnvironmentImpl(
152153
getRemoteEnvironment(
153154
remoteEnvVarsProviderUrl, remoteEnvVarsProviderKey, sco.okHttpClient));
154-
CiEnvironment localEnvironment = new CiEnvironmentImpl(System.getenv());
155155
return new CompositeCiEnvironment(remoteEnvironment, localEnvironment);
156156
} else {
157-
return new CiEnvironmentImpl(System.getenv());
157+
return localEnvironment;
158158
}
159159
}
160160

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package datadog.trace.civisibility;
22

3+
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SIGNAL_SERVER_HOST;
4+
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SIGNAL_SERVER_PORT;
35
import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext;
6+
import static datadog.trace.util.Strings.propertyNameToSystemPropertyName;
47

5-
import datadog.trace.api.config.CiVisibilityConfig;
8+
import datadog.environment.SystemProperties;
69
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
710
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
8-
import datadog.trace.util.Strings;
911
import java.net.InetSocketAddress;
1012
import java.util.Properties;
1113
import javax.annotation.Nullable;
@@ -69,8 +71,8 @@ private boolean isWrapper() {
6971
}
7072

7173
private boolean isMavenParent() {
72-
return System.getProperty("maven.home") != null
73-
&& System.getProperty("classworlds.conf") != null
74+
return SystemProperties.get("maven.home") != null
75+
&& SystemProperties.get("classworlds.conf") != null
7476
// when using Maven Wrapper
7577
|| ClassLoader.getSystemClassLoader()
7678
.getResource("org/apache/maven/wrapper/WrapperExecutor.class")
@@ -82,7 +84,7 @@ private boolean isGradleDaemon() {
8284
.getResource("org/gradle/launcher/daemon/bootstrap/GradleDaemon.class")
8385
!= null
8486
// double-check this is not a Gradle Worker
85-
&& System.getProperties().getProperty("org.gradle.internal.worker.tmpdir") == null;
87+
&& SystemProperties.get("org.gradle.internal.worker.tmpdir") == null;
8688
}
8789

8890
private boolean isGradleLauncher() {
@@ -93,16 +95,12 @@ private boolean isGradleLauncher() {
9395

9496
@Nullable
9597
public InetSocketAddress getSignalServerAddress() {
96-
// System.getProperty is used rather than Config,
98+
// System properties are used rather than Config,
9799
// because system variables can be set after config was initialized
98100
String host =
99-
System.getProperty(
100-
Strings.propertyNameToSystemPropertyName(
101-
CiVisibilityConfig.CIVISIBILITY_SIGNAL_SERVER_HOST));
101+
SystemProperties.get(propertyNameToSystemPropertyName(CIVISIBILITY_SIGNAL_SERVER_HOST));
102102
String port =
103-
System.getProperty(
104-
Strings.propertyNameToSystemPropertyName(
105-
CiVisibilityConfig.CIVISIBILITY_SIGNAL_SERVER_PORT));
103+
SystemProperties.get(propertyNameToSystemPropertyName(CIVISIBILITY_SIGNAL_SERVER_PORT));
106104
if (host != null && port != null) {
107105
return new InetSocketAddress(host, Integer.parseInt(port));
108106
} else {

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ci/env/CiEnvironmentImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.civisibility.ci.env;
22

3+
import java.util.Collections;
34
import java.util.Map;
45

56
public class CiEnvironmentImpl implements CiEnvironment {
@@ -10,6 +11,16 @@ public CiEnvironmentImpl(Map<String, String> env) {
1011
this.env = env;
1112
}
1213

14+
public static CiEnvironment local() {
15+
Map<String, String> env;
16+
try {
17+
env = System.getenv();
18+
} catch (SecurityException e) {
19+
env = Collections.emptyMap();
20+
}
21+
return new CiEnvironmentImpl(env);
22+
}
23+
1324
@Override
1425
public String get(String name) {
1526
return env.get(name);

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,18 @@ private Map<String, String> getPropertiesPropagatedToChildProcess(
138138
ExecutionSettings executionSettings,
139139
BuildSessionSettings sessionSettings) {
140140
Map<String, String> propagatedSystemProperties = new HashMap<>();
141-
Properties systemProperties = System.getProperties();
142-
for (Map.Entry<Object, Object> e : systemProperties.entrySet()) {
143-
String propertyName = (String) e.getKey();
144-
Object propertyValue = e.getValue();
145-
if ((propertyName.startsWith(Config.PREFIX)
146-
|| propertyName.startsWith("datadog.slf4j.simpleLogger.defaultLogLevel"))
147-
&& propertyValue != null) {
148-
propagatedSystemProperties.put(propertyName, propertyValue.toString());
141+
try {
142+
Properties systemProperties = System.getProperties();
143+
for (Map.Entry<Object, Object> e : systemProperties.entrySet()) {
144+
String propertyName = (String) e.getKey();
145+
Object propertyValue = e.getValue();
146+
if ((propertyName.startsWith(Config.PREFIX)
147+
|| propertyName.startsWith("datadog.slf4j.simpleLogger.defaultLogLevel"))
148+
&& propertyValue != null) {
149+
propagatedSystemProperties.put(propertyName, propertyValue.toString());
150+
}
149151
}
152+
} catch (SecurityException ignored) {
150153
}
151154

152155
propagatedSystemProperties.put(

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/utils/FileUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.civisibility.utils;
22

3+
import datadog.environment.SystemProperties;
34
import de.thetaphi.forbiddenapis.SuppressForbidden;
45
import java.io.IOException;
56
import java.nio.file.FileVisitResult;
@@ -77,7 +78,7 @@ public static String expandTilde(final String path) {
7778
return path;
7879
}
7980

80-
return path.replaceFirst("^~", System.getProperty("user.home"));
81+
return path.replaceFirst("^~", SystemProperties.getOrDefault("user.home", ""));
8182
}
8283

8384
public static String toRealPath(String path) {

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import datadog.common.version.VersionInfo;
1313
import datadog.communication.http.OkHttpUtils;
1414
import datadog.crashtracking.dto.CrashLog;
15+
import datadog.environment.SystemProperties;
1516
import datadog.trace.api.Config;
1617
import datadog.trace.api.DDTags;
1718
import datadog.trace.bootstrap.config.provider.ConfigProvider;
@@ -302,7 +303,9 @@ private RequestBody makeTelemetryRequestBody(@Nonnull String content) throws IOE
302303
writer.beginObject();
303304
writer.name("env").value(config.getEnv());
304305
writer.name("language_name").value("jvm");
305-
writer.name("language_version").value(System.getProperty("java.version", "unknown"));
306+
writer
307+
.name("language_version")
308+
.value(SystemProperties.getOrDefault("java.version", "unknown"));
306309
writer.name("service_name").value(config.getServiceName());
307310
writer.name("service_version").value(config.getVersion());
308311
writer.name("tracer_version").value(VersionInfo.VERSION);

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/CrashUploaderScriptInitializer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import static java.nio.file.attribute.PosixFilePermissions.fromString;
1212
import static java.util.Locale.ROOT;
1313

14+
import datadog.environment.SystemProperties;
1415
import datadog.trace.util.PidHelper;
1516
import datadog.trace.util.Strings;
1617
import java.io.BufferedReader;
@@ -36,7 +37,7 @@ static void initialize(String onErrorVal, String onErrorFile) {
3637
return;
3738
}
3839
if (onErrorFile == null || onErrorFile.isEmpty()) {
39-
onErrorFile = System.getProperty("user.dir") + "/hs_err_pid" + PidHelper.getPid() + ".log";
40+
onErrorFile = SystemProperties.get("user.dir") + "/hs_err_pid" + PidHelper.getPid() + ".log";
4041
LOG.debug("No -XX:ErrorFile value, defaulting to {}", onErrorFile);
4142
} else {
4243
onErrorFile = Strings.replace(onErrorFile, "%p", PidHelper.getPid());
@@ -120,7 +121,7 @@ private static void writeCrashUploaderScript(
120121

121122
private static String template(String line, String execClass, String crashFile) {
122123
line = Strings.replace(line, "!AGENT_JAR!", execClass);
123-
line = Strings.replace(line, "!JAVA_HOME!", System.getProperty("java.home"));
124+
line = Strings.replace(line, "!JAVA_HOME!", SystemProperties.get("java.home"));
124125
if (crashFile != null) {
125126
line = Strings.replace(line, "!JAVA_ERROR_FILE!", crashFile);
126127
}

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/Initializer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.datadoghq.profiler.JVMAccess;
99
import com.sun.management.HotSpotDiagnosticMXBean;
1010
import datadog.environment.OperatingSystem;
11+
import datadog.environment.SystemProperties;
1112
import datadog.libs.ddprof.DdprofLibraryLoader;
1213
import datadog.trace.util.PidHelper;
1314
import datadog.trace.util.TempLocationManager;
@@ -162,7 +163,7 @@ static void writeConfig(Path scriptPath, String... entries) {
162163
bw.write(entries[i + 1]);
163164
bw.newLine();
164165
}
165-
bw.write("java_home=" + System.getProperty("java.home"));
166+
bw.write("java_home=" + SystemProperties.get("java.home"));
166167
bw.newLine();
167168

168169
Runtime.getRuntime()

dd-java-agent/agent-crashtracking/src/main/java/datadog/crashtracking/parsers/HotspotCrashLogParser.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import datadog.crashtracking.dto.SemanticVersion;
1212
import datadog.crashtracking.dto.StackFrame;
1313
import datadog.crashtracking.dto.StackTrace;
14+
import datadog.environment.SystemProperties;
1415
import java.time.OffsetDateTime;
1516
import java.time.ZonedDateTime;
1617
import java.time.format.DateTimeFormatter;
@@ -214,10 +215,10 @@ public CrashLog parse(String crashLog) {
214215
Metadata metadata = new Metadata("dd-trace-java", VersionInfo.VERSION, "java", null);
215216
OSInfo osInfo =
216217
new OSInfo(
217-
System.getProperty("os.arch"),
218-
System.getProperty("sun.arch.data.model"),
219-
System.getProperty("os.name"),
220-
SemanticVersion.of(System.getProperty("os.version")));
218+
SystemProperties.get("os.arch"),
219+
SystemProperties.get("sun.arch.data.model"),
220+
SystemProperties.get("os.name"),
221+
SemanticVersion.of(SystemProperties.get("os.version")));
221222
ProcInfo procInfo = pid != null ? new ProcInfo(pid) : null;
222223
return new CrashLog(false, datetime, error, metadata, osInfo, procInfo);
223224
}

0 commit comments

Comments
 (0)