Skip to content

Commit 33422a3

Browse files
Migrate internal-api to environment component (#9091)
1 parent a926b1c commit 33422a3

File tree

24 files changed

+170
-143
lines changed

24 files changed

+170
-143
lines changed

communication/src/main/java/datadog/communication/ddagent/ExternalAgentLauncher.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import static datadog.trace.util.ProcessSupervisor.Health.NEVER_CHECKED;
66
import static datadog.trace.util.ProcessSupervisor.Health.READY_TO_START;
77

8+
import datadog.environment.OperatingSystem;
89
import datadog.trace.api.Config;
9-
import datadog.trace.api.Platform;
1010
import datadog.trace.util.ProcessSupervisor;
1111
import java.io.Closeable;
1212
import java.io.File;
@@ -17,7 +17,7 @@ public class ExternalAgentLauncher implements Closeable {
1717
private static final Logger log = LoggerFactory.getLogger(ExternalAgentLauncher.class);
1818

1919
private static final ProcessBuilder.Redirect DISCARD =
20-
ProcessBuilder.Redirect.to(new File((Platform.isWindows() ? "NUL" : "/dev/null")));
20+
ProcessBuilder.Redirect.to(new File((OperatingSystem.isWindows() ? "NUL" : "/dev/null")));
2121

2222
private ProcessSupervisor traceProcessSupervisor;
2323
private ProcessSupervisor dogStatsDProcessSupervisor;

communication/src/main/java/datadog/communication/monitor/DDAgentStatsDConnection.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
import com.timgroup.statsd.NoOpDirectStatsDClient;
99
import com.timgroup.statsd.NonBlockingStatsDClientBuilder;
1010
import com.timgroup.statsd.StatsDClientErrorHandler;
11+
import datadog.environment.OperatingSystem;
1112
import datadog.trace.api.Config;
12-
import datadog.trace.api.Platform;
1313
import datadog.trace.relocate.api.IOLogger;
1414
import datadog.trace.util.AgentTaskScheduler;
1515
import datadog.trace.util.AgentThreadFactory;
@@ -136,7 +136,7 @@ private void doConnect() {
136136
if (bufferSize != null) {
137137
clientBuilder.socketBufferSize(bufferSize);
138138
}
139-
int packetSize = Platform.isMac() ? 2048 : 8192;
139+
int packetSize = OperatingSystem.isMacOs() ? 2048 : 8192;
140140
if (bufferSize != null && bufferSize < packetSize) {
141141
packetSize = bufferSize;
142142
}
@@ -185,7 +185,7 @@ private void discoverConnectionSettings() {
185185
}
186186

187187
if (null == host) {
188-
if (!Platform.isWindows() && new File(DEFAULT_DOGSTATSD_SOCKET_PATH).exists()) {
188+
if (!OperatingSystem.isWindows() && new File(DEFAULT_DOGSTATSD_SOCKET_PATH).exists()) {
189189
log.info("Detected {}. Using it to send StatsD data.", DEFAULT_DOGSTATSD_SOCKET_PATH);
190190
host = DEFAULT_DOGSTATSD_SOCKET_PATH;
191191
port = 0; // tells dogstatsd client to treat host as a socket path

dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[
7171
+ "com.datadog.profiling.controller.openjdk.events.SmapEntryFactory$SmapParseErrorEvent:build_time,"
7272
+ "com.datadog.profiling.controller.TempLocationManager$SingletonHolder:run_time,"
7373
+ "com.datadog.profiling.ddprof.JavaProfilerLoader:run_time,"
74+
+ "datadog.environment.JavaVirtualMachine:rerun,"
7475
+ "datadog.trace.agent.tooling.WeakMaps$Adapter:build_time,"
7576
+ "datadog.trace.api.Config:rerun,"
7677
+ "datadog.trace.api.Platform:rerun,"

dd-trace-core/src/main/java/datadog/trace/common/writer/TraceStructureWriter.java

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

3+
import datadog.environment.OperatingSystem;
34
import datadog.trace.api.DDSpanId;
45
import datadog.trace.api.DDTraceId;
5-
import datadog.trace.api.Platform;
66
import datadog.trace.core.DDSpan;
77
import de.thetaphi.forbiddenapis.SuppressForbidden;
88
import java.io.FileOutputStream;
@@ -81,7 +81,7 @@ public TraceStructureWriter(String outputFile, boolean debugLog) {
8181
private static String[] parseArgs(String outputFile) {
8282
String[] args = ARGS_DELIMITER.split(outputFile);
8383
// Check Windows absolute paths (<drive>:<path>) as column is used as arg delimiter
84-
if (Platform.isWindows()
84+
if (OperatingSystem.isWindows()
8585
&& args.length > 1
8686
&& args[0].length() == 1
8787
&& (args[1].startsWith("\\") || args[1].startsWith("/"))) {

internal-api/build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,10 @@ excludedClassesBranchCoverage = [
229229
'datadog.trace.api.ProductActivationConfig',
230230
'datadog.trace.api.ClassloaderConfigurationOverrides.Lazy',
231231
'datadog.trace.util.stacktrace.HotSpotStackWalker',
232-
'datadog.trace.util.stacktrace.StackWalkerFactory'
232+
'datadog.trace.util.stacktrace.StackWalkerFactory',
233+
// Tested using forked process
234+
'datadog.trace.api.env.CapturedEnvironment',
235+
'datadog.trace.api.env.CapturedEnvironment.ProcessInfo'
233236
]
234237
excludedClassesInstructionCoverage = [
235238
'datadog.trace.bootstrap.config.provider.EnvironmentConfigSource',
@@ -244,6 +247,7 @@ dependencies {
244247
api project(':dd-trace-api')
245248
api libs.slf4j
246249
api project(':components:context')
250+
api project(':components:environment')
247251
api project(':components:yaml')
248252
api project(':components:cli')
249253
api project(":utils:time-utils")

internal-api/internal-api-9/src/main/java/datadog/trace/util/stacktrace/JDK9StackWalker.java

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

3-
import datadog.trace.api.Platform;
3+
import datadog.environment.JavaVirtualMachine;
44
import de.thetaphi.forbiddenapis.SuppressForbidden;
55
import java.util.function.Function;
66
import java.util.stream.Stream;
@@ -46,7 +46,7 @@ private static java.lang.StackWalker newStackWalker() {
4646

4747
private static StackMapper findMapper() {
4848
try {
49-
return Platform.isJ9()
49+
return JavaVirtualMachine.isJ9()
5050
? JDK9StackWalker::mapFrameForJ9
5151
: java.lang.StackWalker.StackFrame::toStackTraceElement;
5252
} catch (final Throwable e) {

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.api;
22

3+
import static datadog.environment.JavaVirtualMachine.isJavaVersion;
4+
import static datadog.environment.JavaVirtualMachine.isJavaVersionAtLeast;
35
import static datadog.trace.api.ConfigDefaults.DEFAULT_ADD_SPAN_POINTERS;
46
import static datadog.trace.api.ConfigDefaults.DEFAULT_AGENT_HOST;
57
import static datadog.trace.api.ConfigDefaults.DEFAULT_AGENT_TIMEOUT;
@@ -609,6 +611,8 @@
609611
import static datadog.trace.util.CollectionUtils.tryMakeImmutableSet;
610612
import static datadog.trace.util.Strings.propertyNameToEnvironmentVariableName;
611613

614+
import datadog.environment.JavaVirtualMachine;
615+
import datadog.environment.OperatingSystem;
612616
import datadog.trace.api.civisibility.CiVisibilityWellKnownTags;
613617
import datadog.trace.api.config.GeneralConfig;
614618
import datadog.trace.api.config.ProfilingConfig;
@@ -3299,41 +3303,41 @@ public boolean isDatadogProfilerEnabled() {
32993303
public static boolean isDatadogProfilerEnablementOverridden() {
33003304
// old non-LTS versions without important backports
33013305
// also, we have no windows binaries
3302-
return Platform.isWindows()
3303-
|| Platform.isJavaVersion(18)
3304-
|| Platform.isJavaVersion(16)
3305-
|| Platform.isJavaVersion(15)
3306-
|| Platform.isJavaVersion(14)
3307-
|| Platform.isJavaVersion(13)
3308-
|| Platform.isJavaVersion(12)
3309-
|| Platform.isJavaVersion(10)
3310-
|| Platform.isJavaVersion(9);
3306+
return OperatingSystem.isWindows()
3307+
|| isJavaVersion(18)
3308+
|| isJavaVersion(16)
3309+
|| isJavaVersion(15)
3310+
|| isJavaVersion(14)
3311+
|| isJavaVersion(13)
3312+
|| isJavaVersion(12)
3313+
|| isJavaVersion(10)
3314+
|| isJavaVersion(9);
33113315
}
33123316

33133317
public static boolean isDatadogProfilerSafeInCurrentEnvironment() {
33143318
// don't want to put this logic (which will evolve) in the public ProfilingConfig, and can't
33153319
// access Platform there
3316-
if (!Platform.isJ9() && Platform.isJavaVersion(8)) {
3320+
if (!JavaVirtualMachine.isJ9() && isJavaVersion(8)) {
33173321
String arch = System.getProperty("os.arch");
33183322
if ("aarch64".equalsIgnoreCase(arch) || "arm64".equalsIgnoreCase(arch)) {
33193323
return false;
33203324
}
33213325
}
3322-
if (Platform.isGraalVM()) {
3326+
if (JavaVirtualMachine.isGraalVM()) {
33233327
// let's be conservative about GraalVM and require opt-in from the users
33243328
return false;
33253329
}
33263330
boolean result = false;
3327-
if (Platform.isJ9()) {
3331+
if (JavaVirtualMachine.isJ9()) {
33283332
// OpenJ9 will activate only JVMTI GetAllStackTraces based profiling which is safe
33293333
result = true;
33303334
} else {
33313335
// JDK 18 is missing ASGCT fixes, so we can't use it
3332-
if (!Platform.isJavaVersion(18)) {
3336+
if (!isJavaVersion(18)) {
33333337
result =
3334-
Platform.isJavaVersionAtLeast(17, 0, 5)
3335-
|| (Platform.isJavaVersion(11) && Platform.isJavaVersionAtLeast(11, 0, 17))
3336-
|| (Platform.isJavaVersion(8) && Platform.isJavaVersionAtLeast(8, 0, 352));
3338+
isJavaVersionAtLeast(17, 0, 5)
3339+
|| (isJavaVersion(11) && isJavaVersionAtLeast(11, 0, 17))
3340+
|| (isJavaVersion(8) && isJavaVersionAtLeast(8, 0, 352));
33373341
}
33383342
}
33393343
return result;

internal-api/src/main/java/datadog/trace/api/env/CapturedEnvironment.java

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package datadog.trace.api.env;
22

3+
import datadog.environment.JavaVirtualMachine;
34
import datadog.trace.api.config.GeneralConfig;
4-
import de.thetaphi.forbiddenapis.SuppressForbidden;
55
import java.io.File;
66
import java.util.HashMap;
7-
import java.util.Locale;
87
import java.util.Map;
98

109
/**
@@ -18,28 +17,10 @@ public static class ProcessInfo {
1817
public String mainClass;
1918
public File jarFile;
2019

21-
@SuppressForbidden
2220
public ProcessInfo() {
23-
// Besides "sun.java.command" property is not an standard, all main JDKs has set this
24-
// property.
25-
// Tested on:
26-
// - OracleJDK, OpenJDK, AdoptOpenJDK, IBM JDK, Azul Zulu JDK, Amazon Coretto JDK
27-
final String command = System.getProperty("sun.java.command");
28-
if (command == null || command.isEmpty()) {
29-
return;
30-
}
31-
32-
final String[] split = command.trim().split(" ");
33-
if (split.length == 0 || split[0].isEmpty()) {
34-
return;
35-
}
36-
37-
final String candidate = split[0];
38-
if (candidate.toLowerCase(Locale.ROOT).endsWith(".jar")) {
39-
jarFile = new File(candidate);
40-
} else {
41-
mainClass = candidate;
42-
}
21+
String jarName = JavaVirtualMachine.getJarFile();
22+
jarFile = jarName == null ? null : new File(jarName);
23+
mainClass = JavaVirtualMachine.getMainClass();
4324
}
4425

4526
/**

internal-api/src/main/java/datadog/trace/api/iast/IastEnabledChecks.java

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

3+
import datadog.environment.JavaVirtualMachine;
34
import datadog.trace.api.Config;
4-
import datadog.trace.api.Platform;
55
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;
77

@@ -13,7 +13,7 @@ private IastEnabledChecks() {}
1313

1414
public static boolean isMajorJavaVersionAtLeast(final String version) {
1515
try {
16-
return Platform.isJavaVersionAtLeast(Integer.parseInt(version));
16+
return JavaVirtualMachine.isJavaVersionAtLeast(Integer.parseInt(version));
1717
} catch (final Exception e) {
1818
LOGGER.error(
1919
"Error checking major java version {}, expect some call sites to be disabled",

internal-api/src/main/java/datadog/trace/util/CollectionUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.util;
22

3-
import static datadog.trace.api.Platform.isJavaVersionAtLeast;
3+
import static datadog.environment.JavaVirtualMachine.isJavaVersionAtLeast;
44

55
import java.lang.invoke.MethodHandle;
66
import java.lang.invoke.MethodHandles;

0 commit comments

Comments
 (0)