diff --git a/buildSrc/src/main/kotlin/datadog/gradle/plugin/config/ConfigInversionLinter.kt b/buildSrc/src/main/kotlin/datadog/gradle/plugin/config/ConfigInversionLinter.kt index d041463ac03..890fea2c335 100644 --- a/buildSrc/src/main/kotlin/datadog/gradle/plugin/config/ConfigInversionLinter.kt +++ b/buildSrc/src/main/kotlin/datadog/gradle/plugin/config/ConfigInversionLinter.kt @@ -97,9 +97,9 @@ private fun registerCheckEnvironmentVariablesUsage(project: Project) { val javaFiles = project.fileTree(project.projectDir) { include("**/src/main/java/**/*.java") exclude("**/build/**") - exclude("internal-api/src/main/java/datadog/trace/api/ConfigHelper.java") + exclude("utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java") exclude("dd-java-agent/agent-bootstrap/**") - exclude("dd-java-agent/src/main/java/datadog/trace/bootstrap/BootstrapInitializationTelemetry.java") + exclude("dd-java-agent/src/main/java/datadog/trace/bootstrap/**") } val pattern = Regex("""EnvironmentVariables\.get\s*\(""") diff --git a/components/environment/src/main/java/datadog/environment/EnvironmentVariables.java b/components/environment/src/main/java/datadog/environment/EnvironmentVariables.java index 5db48340e5c..c27c13e6f12 100644 --- a/components/environment/src/main/java/datadog/environment/EnvironmentVariables.java +++ b/components/environment/src/main/java/datadog/environment/EnvironmentVariables.java @@ -3,6 +3,7 @@ import static java.util.Collections.emptyMap; import static java.util.Collections.unmodifiableMap; +import de.thetaphi.forbiddenapis.SuppressForbidden; import java.util.HashMap; import java.util.Map; import javax.annotation.Nullable; @@ -17,10 +18,15 @@ public final class EnvironmentVariables { private EnvironmentVariables() {} public static class EnvironmentVariablesProvider { + + // Environment Component has SecurityException handling, so it is safe to call System.getenv + // here + @SuppressForbidden public String get(String name) { return System.getenv(name); } + @SuppressForbidden public Map getAll() { return System.getenv(); } diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java index 08934e44579..d046667fed5 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java @@ -23,6 +23,7 @@ public final class Constants { "datadog.appsec.api", "datadog.trace.api", "datadog.trace.bootstrap", + "datadog.trace.config.inversion", "datadog.trace.context", "datadog.trace.instrumentation.api", "datadog.trace.logging", diff --git a/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy index d10ff6f35ef..0957ec215a8 100644 --- a/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy +++ b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy @@ -83,7 +83,7 @@ abstract class CiVisibilitySmokeTest extends Specification { protected verifyEventsAndCoverages(String projectName, String toolchain, String toolchainVersion, List> events, List> coverages, List additionalDynamicTags = []) { def additionalReplacements = ["content.meta.['test.toolchain']": "$toolchain:$toolchainVersion"] - if (System.getenv().get("GENERATE_TEST_FIXTURES") != null) { + if (System.getenv("GENERATE_TEST_FIXTURES") != null) { def baseTemplatesPath = CiVisibilitySmokeTest.classLoader.getResource(projectName).toURI().schemeSpecificPart.replace('build/resources/test', 'src/test/resources') CiVisibilityTestUtils.generateTemplates(baseTemplatesPath, events, coverages, additionalReplacements.keySet() + additionalDynamicTags, SMOKE_IGNORED_TAGS) } else { diff --git a/dd-java-agent/agent-logging/src/main/java/datadog/trace/logging/ddlogger/DDLoggerFactory.java b/dd-java-agent/agent-logging/src/main/java/datadog/trace/logging/ddlogger/DDLoggerFactory.java index 083d559b711..e0a75b8213a 100644 --- a/dd-java-agent/agent-logging/src/main/java/datadog/trace/logging/ddlogger/DDLoggerFactory.java +++ b/dd-java-agent/agent-logging/src/main/java/datadog/trace/logging/ddlogger/DDLoggerFactory.java @@ -1,8 +1,8 @@ package datadog.trace.logging.ddlogger; -import datadog.environment.EnvironmentVariables; import datadog.environment.SystemProperties; import datadog.trace.api.Platform; +import datadog.trace.config.inversion.ConfigHelper; import datadog.trace.logging.LogLevel; import datadog.trace.logging.LogLevelSwitcher; import datadog.trace.logging.LoggerHelper; @@ -108,7 +108,7 @@ private static boolean isFlagEnabled( if ("false".equalsIgnoreCase(value)) { return false; } - value = EnvironmentVariables.get(envVar); + value = ConfigHelper.env(envVar); if ("true".equalsIgnoreCase(value)) { return true; } diff --git a/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/BootstrapClasspathSetupListener.java b/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/BootstrapClasspathSetupListener.java index 65159a7c9c6..d607aae7c89 100644 --- a/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/BootstrapClasspathSetupListener.java +++ b/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/BootstrapClasspathSetupListener.java @@ -70,6 +70,7 @@ public void launcherSessionOpened(LauncherSession session) { "datadog.appsec.api", "datadog.trace.api", "datadog.trace.bootstrap", + "datadog.trace.config.inversion", "datadog.trace.context", "datadog.trace.instrumentation.api", "datadog.trace.logging", diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-lambda-handler-1.2/src/main/java/datadog/trace/instrumentation/aws/v1/lambda/LambdaHandlerInstrumentation.java b/dd-java-agent/instrumentation/aws-java/aws-java-lambda-handler-1.2/src/main/java/datadog/trace/instrumentation/aws/v1/lambda/LambdaHandlerInstrumentation.java index c8f8fd851ed..91648f09ff0 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-lambda-handler-1.2/src/main/java/datadog/trace/instrumentation/aws/v1/lambda/LambdaHandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java/aws-java-lambda-handler-1.2/src/main/java/datadog/trace/instrumentation/aws/v1/lambda/LambdaHandlerInstrumentation.java @@ -16,7 +16,6 @@ import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.google.auto.service.AutoService; -import datadog.environment.EnvironmentVariables; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.CallDepthThreadLocalMap; @@ -24,6 +23,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; +import datadog.trace.config.inversion.ConfigHelper; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -61,7 +61,7 @@ public String[] helperClassNames() { @Override protected boolean defaultEnabled() { - return EnvironmentVariables.get(HANDLER_ENV_NAME) != null; + return ConfigHelper.env(HANDLER_ENV_NAME) != null; } @Override diff --git a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java index 7281ca41b36..00d9cfcf863 100644 --- a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java +++ b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java @@ -102,8 +102,10 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ + "datadog.trace.api.ResolverCacheConfig$5:build_time," + "datadog.trace.api.TracePropagationStyle:build_time," + "datadog.trace.api.TracePropagationBehaviorExtract:build_time," - + "datadog.trace.api.telemetry.OtelEnvMetricCollectorImpl:build_time," + + "datadog.trace.api.telemetry.ConfigInversionMetricCollectorProvider:rerun," + "datadog.trace.api.telemetry.ConfigInversionMetricCollectorImpl:build_time," + + "datadog.trace.api.telemetry.ConfigInversionMetricCollectorImpl$ConfigInversionMetric:build_time," + + "datadog.trace.api.telemetry.OtelEnvMetricCollectorImpl:build_time," + "datadog.trace.api.profiling.ProfilingEnablement:build_time," + "datadog.trace.bootstrap.config.provider.ConfigConverter:build_time," + "datadog.trace.bootstrap.config.provider.ConfigConverter$ValueOfLookup:build_time," @@ -140,6 +142,9 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ + "datadog.trace.bootstrap.instrumentation.jfr.backpressure.BackpressureSampleEvent:build_time," + "datadog.trace.bootstrap.instrumentation.jfr.directallocation.DirectAllocationTotalEvent:build_time," + "datadog.trace.bootstrap.WeakMapContextStore:build_time," + + "datadog.trace.config.inversion.ConfigHelper:rerun," + + "datadog.trace.config.inversion.ConfigHelper$StrictnessPolicy:rerun," + + "datadog.trace.config.inversion.GeneratedSupportedConfigurations:rerun," + "datadog.trace.instrumentation.guava10.GuavaAsyncResultExtension:build_time," + "datadog.trace.instrumentation.reactivestreams.ReactiveStreamsAsyncResultExtension:build_time," + "datadog.trace.instrumentation.reactor.core.ReactorAsyncResultExtension:build_time," diff --git a/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenUtils.java b/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenUtils.java index 3b49dce6841..b08b6bffa39 100644 --- a/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenUtils.java +++ b/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenUtils.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.maven3; -import datadog.environment.EnvironmentVariables; import datadog.trace.api.civisibility.domain.JavaAgent; +import datadog.trace.config.inversion.ConfigHelper; import datadog.trace.util.MethodHandles; import datadog.trace.util.Strings; import de.thetaphi.forbiddenapis.SuppressForbidden; @@ -66,7 +66,7 @@ public abstract class MavenUtils { * of the request object */ public static String getCommandLine(MavenSession session) { - String mavenCmdLineArgsEnvVar = EnvironmentVariables.get(MAVEN_CMD_LINE_ARGS_ENVIRONMENT_VAR); + String mavenCmdLineArgsEnvVar = ConfigHelper.env(MAVEN_CMD_LINE_ARGS_ENVIRONMENT_VAR); if (mavenCmdLineArgsEnvVar != null) { return MVN_CMD_LINE_INVOCATION + mavenCmdLineArgsEnvVar; } diff --git a/dd-java-agent/src/main/java6/datadog/trace/bootstrap/AgentPreCheck.java b/dd-java-agent/src/main/java6/datadog/trace/bootstrap/AgentPreCheck.java index 3ec4f41a4d7..cb4d1b104f8 100644 --- a/dd-java-agent/src/main/java6/datadog/trace/bootstrap/AgentPreCheck.java +++ b/dd-java-agent/src/main/java6/datadog/trace/bootstrap/AgentPreCheck.java @@ -90,6 +90,9 @@ private static boolean compatible() { } // Reachable for testing + // System.getenv usage is necessary since class is designed to be Java 6 compatible, while + // Environment component is for Java 8+ + @SuppressForbidden static boolean compatible(String javaVersion, String javaHome, PrintStream output) { int majorJavaVersion = parseJavaMajorVersion(javaVersion); diff --git a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle index a545d93ece0..11145336a8f 100644 --- a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle +++ b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle @@ -40,7 +40,7 @@ if (hasProperty('agentPath')) { if (withProfiler && property('profiler') == 'true') { buildArgs.add("-J-Ddd.profiling.enabled=true") } - jvmArgs.add("-Xmx3072M") + jvmArgs.add("-Xmx4096M") } } } diff --git a/gradle/forbiddenApiFilters/main.txt b/gradle/forbiddenApiFilters/main.txt index b197062e67c..db69659cb7a 100644 --- a/gradle/forbiddenApiFilters/main.txt +++ b/gradle/forbiddenApiFilters/main.txt @@ -29,6 +29,11 @@ net.bytebuddy.matcher.ElementMatchers#isAbstract() java.lang.System#out java.lang.System#err +# use ConfigHelper to access environment variables instead of using System.getenv() or System.getenv(String) +@defaultMessage Use ConfigHelper to access environment variables instead of using System.getenv() or System.getenv(String) +java.lang.System#getenv() +java.lang.System#getenv(java.lang.String) + #Use jdk LongAdder @defaultMessage use LongAdder instead of the legacy jctools FixedSizeStripedLongCounter org.jctools.counters.FixedSizeStripedLongCounter diff --git a/internal-api/src/main/java/datadog/trace/api/Config.java b/internal-api/src/main/java/datadog/trace/api/Config.java index b643371221b..565eb997d1e 100644 --- a/internal-api/src/main/java/datadog/trace/api/Config.java +++ b/internal-api/src/main/java/datadog/trace/api/Config.java @@ -654,7 +654,6 @@ import static datadog.trace.util.CollectionUtils.tryMakeImmutableSet; import static datadog.trace.util.ConfigStrings.propertyNameToEnvironmentVariableName; -import datadog.environment.EnvironmentVariables; import datadog.environment.JavaVirtualMachine; import datadog.environment.OperatingSystem; import datadog.environment.SystemProperties; @@ -678,6 +677,7 @@ import datadog.trace.bootstrap.config.provider.ConfigProvider; import datadog.trace.bootstrap.config.provider.SystemPropertiesConfigSource; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; +import datadog.trace.config.inversion.ConfigHelper; import datadog.trace.context.TraceScope; import datadog.trace.util.ConfigStrings; import datadog.trace.util.PidHelper; @@ -5386,7 +5386,7 @@ private static boolean isWindowsOS() { } private static String getEnv(String name) { - String value = EnvironmentVariables.get(name); + String value = ConfigHelper.env(name); if (value != null) { // Report non-default sequence id for consistency ConfigCollector.get().put(name, value, ConfigOrigin.ENV, NON_DEFAULT_SEQ_ID); diff --git a/internal-api/src/main/java/datadog/trace/util/PidHelper.java b/internal-api/src/main/java/datadog/trace/util/PidHelper.java index 357262448d8..887dd3900e8 100644 --- a/internal-api/src/main/java/datadog/trace/util/PidHelper.java +++ b/internal-api/src/main/java/datadog/trace/util/PidHelper.java @@ -1,9 +1,9 @@ package datadog.trace.util; -import datadog.environment.EnvironmentVariables; import datadog.environment.JavaVirtualMachine; import datadog.environment.OperatingSystem; import datadog.environment.SystemProperties; +import datadog.trace.config.inversion.ConfigHelper; import de.thetaphi.forbiddenapis.SuppressForbidden; import java.io.IOException; import java.lang.management.ManagementFactory; @@ -80,13 +80,13 @@ private static String getTempDir() { return "/tmp"; } else if (OperatingSystem.isWindows()) { return Stream.of("TMP", "TEMP", "USERPROFILE") - .map(EnvironmentVariables::get) + .map(ConfigHelper::env) .filter(Objects::nonNull) .filter(((Predicate) String::isEmpty).negate()) .findFirst() .orElse("C:\\Windows"); } else if (OperatingSystem.isMacOs()) { - return EnvironmentVariables.get("TMPDIR"); + return ConfigHelper.env("TMPDIR"); } else { return SystemProperties.get("java.io.tmpdir"); } diff --git a/internal-api/src/main/java/datadog/trace/util/TempLocationManager.java b/internal-api/src/main/java/datadog/trace/util/TempLocationManager.java index 825aa74db56..0b0b2f113c2 100644 --- a/internal-api/src/main/java/datadog/trace/util/TempLocationManager.java +++ b/internal-api/src/main/java/datadog/trace/util/TempLocationManager.java @@ -1,10 +1,10 @@ package datadog.trace.util; -import datadog.environment.EnvironmentVariables; import datadog.environment.SystemProperties; import datadog.trace.api.config.ProfilingConfig; import datadog.trace.api.profiling.ProfilerFlareLogger; import datadog.trace.bootstrap.config.provider.ConfigProvider; +import datadog.trace.config.inversion.ConfigHelper; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.FileVisitResult; @@ -300,7 +300,7 @@ private TempLocationManager() { static String getBaseTempDirName() { String userName = SystemProperties.get("user.name"); // unlikely, but fall-back to system env based user name - userName = userName == null ? EnvironmentVariables.get("USER") : userName; + userName = userName == null ? ConfigHelper.env("USER") : userName; // make sure we do not have any illegal characters in the user name userName = userName != null ? userName.replace('.', '_').replace('/', '_').replace(' ', '_') : null; diff --git a/internal-api/src/test/groovy/datadog/trace/api/telemetry/ConfigInversionMetricCollectorImplTest.groovy b/internal-api/src/test/groovy/datadog/trace/api/telemetry/ConfigInversionMetricCollectorImplTest.groovy index b6a4607ac9c..36672c53ba6 100644 --- a/internal-api/src/test/groovy/datadog/trace/api/telemetry/ConfigInversionMetricCollectorImplTest.groovy +++ b/internal-api/src/test/groovy/datadog/trace/api/telemetry/ConfigInversionMetricCollectorImplTest.groovy @@ -11,19 +11,19 @@ class ConfigInversionMetricCollectorImplTest extends DDSpecification { def collector = ConfigInversionMetricCollectorImpl.getInstance() when: - ConfigInversionMetricCollectorTestHelper.checkAndEmitUnsupported("DD_UNKNOWN_FEATURE") + ConfigInversionMetricCollectorTestHelper.checkAndEmitUnsupported("FAKE_ENV_VAR") collector.prepareMetrics() def metrics = collector.drain() then: - metrics.size() == 1 + assert metrics.size() == 1 : "The following Environment Variables need to be added to metadata/supported-configurations.json.: ${metrics}\nSee https://datadoghq.atlassian.net/wiki/spaces/APMINT/pages/5372248222/APM+-+Centralized+Configuration+Config+inversion#dd-trace-java" def metric = metrics[0] metric.type == 'count' metric.value == 1 metric.namespace == 'tracers' metric.metricName == CONFIG_INVERSION_METRIC_NAME metric.tags.size() == 1 - metric.tags[0] == 'config_name:DD_UNKNOWN_FEATURE' + metric.tags[0] == 'config_name:FAKE_ENV_VAR' } def "should not emit metric when supported env var is used"() { @@ -36,6 +36,6 @@ class ConfigInversionMetricCollectorImplTest extends DDSpecification { def metrics = collector.drain() then: - metrics.isEmpty() + assert metrics.isEmpty() : "The following Environment Variables need to be added to metadata/supported-configurations.json: ${metrics}" } } diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 08ba305b21d..95f60cc558c 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -9,11 +9,18 @@ "DD_AGENTLESS_LOG_SUBMISSION_URL": ["A"], "DD_AGENT_HOST": ["A"], "DD_AGENT_PORT": ["A"], + "DD_AI_GUARD_ENABLED": ["A"], + "DD_AI_GUARD_ENDPOINT": ["A"], + "DD_AI_GUARD_MAX_CONTENT_SIZE": ["A"], + "DD_AI_GUARD_MAX_MESSAGES_LENGTH": ["A"], + "DD_AI_GUARD_TIMEOUT": ["A"], "DD_API_KEY": ["A"], "DD_API_KEY_FILE": ["A"], + "DD_API_SECURITY_DOWNSTREAM_REQUEST_ANALYSIS_SAMPLE_RATE": ["A"], "DD_API_SECURITY_ENABLED": ["A"], "DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED": ["A"], "DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT": ["A"], + "DD_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS": ["A"], "DD_API_SECURITY_SAMPLE_DELAY": ["A"], "DD_APM_TRACING_ENABLED": ["A"], "DD_APPLICATION_KEY": ["A"], @@ -22,6 +29,7 @@ "DD_APP_CUSTOMJMXBUILDER": ["A"], "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING": ["A"], "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE": ["A"], + "DD_APPSEC_BODY_PARSING_SIZE_LIMIT": ["A"], "DD_APPSEC_COLLECT_ALL_HEADERS": ["A"], "DD_APPSEC_ENABLED": ["A"], "DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED": ["A"], @@ -63,6 +71,7 @@ "DD_CIVISIBILITY_CODE_COVERAGE_INCLUDES": ["A"], "DD_CIVISIBILITY_CODE_COVERAGE_LINES_ENABLED": ["A"], "DD_CIVISIBILITY_CODE_COVERAGE_REPORT_DUMP_DIR": ["A"], + "DD_CIVISIBILITY_CODE_COVERAGE_REPORT_UPLOAD_ENABLED": ["A"], "DD_CIVISIBILITY_CODE_COVERAGE_ROOT_PACKAGES_LIMIT": ["A"], "DD_CIVISIBILITY_COMPILER_PLUGIN_AUTO_CONFIGURATION_ENABLED": ["A"], "DD_CIVISIBILITY_COMPILER_PLUGIN_VERSION": ["A"], @@ -84,6 +93,7 @@ "DD_CIVISIBILITY_GRADLE_SOURCESETS": ["A"], "DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED": ["A"], "DD_CIVISIBILITY_INJECTED_TRACER_VERSION": ["A"], + "DD_CIVISIBILITY_INTAKE_AGENTLESS_URL": ["A"], "DD_CIVISIBILITY_ITR_ENABLED": ["A"], "DD_CIVISIBILITY_JACOCO_PLUGIN_VERSION": ["A"], "DD_CIVISIBILITY_JVM_INFO_CACHE_SIZE": ["A"], @@ -125,8 +135,10 @@ "DD_DATA_JOBS_COMMAND_PATTERN": ["A"], "DD_DATA_JOBS_ENABLED": ["A"], "DD_DATA_JOBS_OPENLINEAGE_ENABLED": ["A"], + "DD_DATA_JOBS_OPENLINEAGE_TIMEOUT_ENABLED": ["A"], "DD_DATA_STREAMS_BUCKET_DURATION_SECONDS": ["A"], "DD_DATA_STREAMS_ENABLED": ["A"], + "DD_DBM_INJECT_SQL_BASEHASH": ["A"], "DD_DBM_PROPAGATION_MODE": ["A"], "DD_DBM_TRACE_PREPARED_STATEMENTS": ["A"], "DD_DISTRIBUTED_DEBUGGER_ENABLED": ["A"], @@ -169,6 +181,7 @@ "DD_EXPERIMENTAL_API_SECURITY_ENABLED": ["A"], "DD_EXPERIMENTAL_DEFER_INTEGRATIONS_UNTIL": ["A"], "DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED": ["A"], + "DD_FORCE_CLEAR_TEXT_HTTP_FOR_INTAKE_CLIENT": ["A"], "DD_GIT_BRANCH": ["A"], "DD_GIT_COMMIT_AUTHOR_DATE": ["A"], "DD_GIT_COMMIT_AUTHOR_EMAIL": ["A"], @@ -394,6 +407,8 @@ "DD_REMOTE_CONFIG_MAX_PAYLOAD_SIZE": ["A"], "DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS": ["A"], "DD_REMOTE_CONFIG_URL": ["A"], + "DD_RESILIENCE4J_MEASURED_ENABLED": ["A"], + "DD_RESILIENCE4J_TAG_METRICS_ENABLED": ["A"], "DD_RESOLVER_CACHE_CONFIG": ["A"], "DD_RESOLVER_CACHE_DIR": ["A"], "DD_RESOLVER_NAMES_ARE_UNIQUE": ["A"], @@ -438,6 +453,8 @@ "DD_SYMBOL_DATABASE_FLUSH_THRESHOLD": ["A"], "DD_SYMBOL_DATABASE_UPLOAD_ENABLED": ["A"], "DD_TAGS": ["A"], + "DD_TAG_NAME_UTF8_CACHE_SIZE": ["A"], + "DD_TAG_VALUE_UTF8_CACHE_SIZE": ["A"], "DD_TELEMETRY_DEBUG_REQUESTS_ENABLED": ["A"], "DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED": ["A"], "DD_TELEMETRY_DEPENDENCY_RESOLUTION_PERIOD_MILLIS": ["A"], @@ -449,6 +466,7 @@ "DD_TELEMETRY_LOG_COLLECTION_ENABLED": ["A"], "DD_TELEMETRY_METRICS_ENABLED": ["A"], "DD_TELEMETRY_METRICS_INTERVAL": ["A"], + "DD_TEST_FAILED_TEST_REPLAY_ENABLED": ["A"], "DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES": ["A"], "DD_TEST_MANAGEMENT_ENABLED": ["A"], "DD_TEST_SESSION_NAME": ["A"], @@ -634,6 +652,7 @@ "DD_TRACE_EXECUTORS": ["A"], "DD_TRACE_EXECUTORS_ALL": ["A"], "DD_TRACE_EXPERIMENTAL_FEATURES_ENABLED": ["A"], + "DD_TRACE_EXPERIMENTAL_JDBC_POOL_WAITING_ENABLED": ["A"], "DD_TRACE_EXPERIMENTAL_JEE_SPLIT_BY_DEPLOYMENT": ["A"], "DD_TRACE_EXPERIMENTAL_KEEP_LATENCY_THRESHOLD_MS": ["A"], "DD_TRACE_EXPERIMENTAL_LONG_RUNNING_ENABLED": ["A"], @@ -745,6 +764,7 @@ "DD_TRACE_IGNITE_ANALYTICS_ENABLED": ["A"], "DD_TRACE_IGNITE_ANALYTICS_SAMPLE_RATE": ["A"], "DD_TRACE_IGNITE_ENABLED": ["A"], + "DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED": ["A"], "DD_TRACE_INPUTSTREAM_ENABLED": ["A"], "DD_TRACE_INTEGRATION_DATANUCLEUS_MATCHING_SHORTCUT_ENABLED": ["A"], "DD_TRACE_INTEGRATION_DROPWIZARD_MATCHING_SHORTCUT_ENABLED": ["A"], @@ -1112,6 +1132,7 @@ "DD_TRACE_SELENIUM_ENABLED": ["B"], "DD_TRACE_SERIALVERSIONUID_FIELD_INJECTION": ["A"], "DD_TRACE_SERVELET_RESPONSE_ENABLED": ["A"], + "DD_TRACE_SERVICE_DISCOVERY_ENABLED": ["A"], "DD_TRACE_SERVICENAMETAGINTERCEPTOR_ENABLED": ["A"], "DD_TRACE_SERVICETALK_CONCURRENT_ENABLED": ["A"], "DD_TRACE_SERVICETALK_ENABLED": ["A"], @@ -1336,6 +1357,7 @@ "OTEL_TRACES_SAMPLER": ["A"] }, "aliases": { + "DD_APPLICATION_KEY": ["DD_APP_KEY"], "DD_PROFILING_ASYNC_LIVEHEAP_CAPACITY": ["DD_PROFILING_DDPROF_MEMLEAK_CAPACITY"], "DD_PROFILING_ASYNC_LIVEHEAP_INTERVAL": ["DD_PROFILING_DDPROF_MEMLEAK_INTERVAL"], "DD_PROFILING_STACKDEPTH": ["DD_PROFILING_DDPROF_STACKDEPTH"], diff --git a/telemetry/src/main/java/datadog/telemetry/TelemetryRequest.java b/telemetry/src/main/java/datadog/telemetry/TelemetryRequest.java index f903feb1aef..9bc2802ba00 100644 --- a/telemetry/src/main/java/datadog/telemetry/TelemetryRequest.java +++ b/telemetry/src/main/java/datadog/telemetry/TelemetryRequest.java @@ -2,7 +2,6 @@ import datadog.common.container.ContainerInfo; import datadog.communication.ddagent.TracerVersion; -import datadog.environment.EnvironmentVariables; import datadog.telemetry.api.DistributionSeries; import datadog.telemetry.api.Integration; import datadog.telemetry.api.LogMessage; @@ -17,6 +16,7 @@ import datadog.trace.api.telemetry.Endpoint; import datadog.trace.api.telemetry.ProductChange; import datadog.trace.api.telemetry.ProductChange.ProductType; +import datadog.trace.config.inversion.ConfigHelper; import java.io.IOException; import java.util.EnumMap; import java.util.Map; @@ -112,9 +112,9 @@ public void writeProducts() { } public void writeInstallSignature() { - String installId = EnvironmentVariables.get("DD_INSTRUMENTATION_INSTALL_ID"); - String installType = EnvironmentVariables.get("DD_INSTRUMENTATION_INSTALL_TYPE"); - String installTime = EnvironmentVariables.get("DD_INSTRUMENTATION_INSTALL_TIME"); + String installId = ConfigHelper.env("DD_INSTRUMENTATION_INSTALL_ID"); + String installType = ConfigHelper.env("DD_INSTRUMENTATION_INSTALL_TYPE"); + String installTime = ConfigHelper.env("DD_INSTRUMENTATION_INSTALL_TIME"); try { requestBody.writeInstallSignature(installId, installType, installTime); diff --git a/utils/config-utils/build.gradle.kts b/utils/config-utils/build.gradle.kts index 7ef5a9b0e34..fe4f4e3edcb 100644 --- a/utils/config-utils/build.gradle.kts +++ b/utils/config-utils/build.gradle.kts @@ -47,6 +47,7 @@ val excludedClassesBranchCoverage by extra( val excludedClassesInstructionCoverage by extra( listOf( + "datadog.trace.api.telemetry.NoOpConfigInversionMetricCollector", "datadog.trace.config.inversion.GeneratedSupportedConfigurations", "datadog.trace.config.inversion.SupportedConfigurationSource" ) diff --git a/utils/config-utils/src/main/java/datadog/trace/api/env/CapturedEnvironment.java b/utils/config-utils/src/main/java/datadog/trace/api/env/CapturedEnvironment.java index 7c4c3dcbe29..d4b618af913 100644 --- a/utils/config-utils/src/main/java/datadog/trace/api/env/CapturedEnvironment.java +++ b/utils/config-utils/src/main/java/datadog/trace/api/env/CapturedEnvironment.java @@ -1,8 +1,8 @@ package datadog.trace.api.env; -import datadog.environment.EnvironmentVariables; import datadog.environment.JavaVirtualMachine; import datadog.trace.api.config.GeneralConfig; +import datadog.trace.config.inversion.ConfigHelper; import java.io.File; import java.util.HashMap; import java.util.Map; @@ -75,8 +75,8 @@ static void useFixedProcessInfo(final ProcessInfo processInfo) { * autodetection will return either the JAR filename or the java main class. */ private String autodetectServiceName() { - String inAas = EnvironmentVariables.get("DD_AZURE_APP_SERVICES"); - String siteName = EnvironmentVariables.get("WEBSITE_SITE_NAME"); + String inAas = ConfigHelper.env("DD_AZURE_APP_SERVICES"); + String siteName = ConfigHelper.env("WEBSITE_SITE_NAME"); if (("true".equalsIgnoreCase(inAas) || "1".equals(inAas)) && siteName != null) { return siteName; diff --git a/utils/config-utils/src/main/java/datadog/trace/api/telemetry/ConfigInversionMetricCollectorProvider.java b/utils/config-utils/src/main/java/datadog/trace/api/telemetry/ConfigInversionMetricCollectorProvider.java index cecc104a36f..a66cee8f35f 100644 --- a/utils/config-utils/src/main/java/datadog/trace/api/telemetry/ConfigInversionMetricCollectorProvider.java +++ b/utils/config-utils/src/main/java/datadog/trace/api/telemetry/ConfigInversionMetricCollectorProvider.java @@ -1,14 +1,22 @@ package datadog.trace.api.telemetry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public final class ConfigInversionMetricCollectorProvider { + private static final Logger log = + LoggerFactory.getLogger(ConfigInversionMetricCollectorProvider.class); private static ConfigInversionMetricCollector INSTANCE = null; private ConfigInversionMetricCollectorProvider() {} public static ConfigInversionMetricCollector get() { if (INSTANCE == null) { - throw new IllegalStateException( - "ConfigInversionMetricCollectorService has not been registered."); + log.debug( + "ConfigInversionMetricCollector has not been registered. Defaulting to NoOp implementation."); + // Return NoOp implementation for build tasks like instrumentJava that run before + // implementation is registered + return NoOpConfigInversionMetricCollector.getInstance(); } return INSTANCE; } diff --git a/utils/config-utils/src/main/java/datadog/trace/api/telemetry/NoOpConfigInversionMetricCollector.java b/utils/config-utils/src/main/java/datadog/trace/api/telemetry/NoOpConfigInversionMetricCollector.java new file mode 100644 index 00000000000..243510d1da9 --- /dev/null +++ b/utils/config-utils/src/main/java/datadog/trace/api/telemetry/NoOpConfigInversionMetricCollector.java @@ -0,0 +1,21 @@ +package datadog.trace.api.telemetry; + +/** + * NOOP implementation of ConfigInversionMetricCollector. Used as a default when the real collector + * is not registered during build tasks like instrumentJava. + */ +public final class NoOpConfigInversionMetricCollector implements ConfigInversionMetricCollector { + private static final NoOpConfigInversionMetricCollector INSTANCE = + new NoOpConfigInversionMetricCollector(); + + private NoOpConfigInversionMetricCollector() {} + + public static NoOpConfigInversionMetricCollector getInstance() { + return INSTANCE; + } + + @Override + public void setUndocumentedEnvVarMetric(String configName) { + // NOOP - do nothing + } +} diff --git a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/AgentArgsInjector.java b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/AgentArgsInjector.java index dc53f44976e..7a5a3c44883 100644 --- a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/AgentArgsInjector.java +++ b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/AgentArgsInjector.java @@ -2,8 +2,8 @@ import static datadog.trace.util.ConfigStrings.toEnvVar; -import datadog.environment.EnvironmentVariables; import datadog.environment.SystemProperties; +import datadog.trace.config.inversion.ConfigHelper; import java.util.Map; public class AgentArgsInjector { @@ -31,7 +31,7 @@ public static void injectAgentArgsConfig(Map args) { } String envVarName = toEnvVar(propertyName); - String envVarValue = EnvironmentVariables.get(envVarName); + String envVarValue = ConfigHelper.env(envVarName); if (envVarValue != null) { // env variables should have higher priority than agent arguments continue; diff --git a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java index 392b10d66ad..3c34ed15c38 100644 --- a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java +++ b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/EnvironmentConfigSource.java @@ -3,13 +3,13 @@ import static datadog.trace.api.ConfigOrigin.ENV; import static datadog.trace.util.ConfigStrings.propertyNameToEnvironmentVariableName; -import datadog.environment.EnvironmentVariables; import datadog.trace.api.ConfigOrigin; +import datadog.trace.config.inversion.ConfigHelper; final class EnvironmentConfigSource extends ConfigProvider.Source { @Override protected String get(String key) { - return EnvironmentVariables.get(propertyNameToEnvironmentVariableName(key)); + return ConfigHelper.env(propertyNameToEnvironmentVariableName(key)); } @Override diff --git a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java index 89f18f8f5ea..566c5ac5dc4 100644 --- a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java +++ b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java @@ -17,11 +17,11 @@ import static datadog.trace.util.ConfigStrings.toEnvVar; import static datadog.trace.util.ConfigStrings.toEnvVarLowerCase; -import datadog.environment.EnvironmentVariables; import datadog.environment.SystemProperties; import datadog.trace.api.ConfigOrigin; import datadog.trace.api.TracePropagationStyle; import datadog.trace.api.telemetry.OtelEnvMetricCollectorProvider; +import datadog.trace.config.inversion.ConfigHelper; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; @@ -185,7 +185,7 @@ private String getDatadogProperty(String sysProp) { private static String getProperty(String sysProp) { String value = SystemProperties.get(sysProp); if (null == value) { - value = EnvironmentVariables.get(toEnvVar(sysProp)); + value = ConfigHelper.env(toEnvVar(sysProp)); } return value; } diff --git a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/StableConfigParser.java b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/StableConfigParser.java index e08b575becb..90fc10f10ac 100644 --- a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/StableConfigParser.java +++ b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/StableConfigParser.java @@ -1,10 +1,10 @@ package datadog.trace.bootstrap.config.provider; -import datadog.environment.EnvironmentVariables; import datadog.environment.SystemProperties; import datadog.trace.bootstrap.config.provider.stableconfig.Rule; import datadog.trace.bootstrap.config.provider.stableconfig.Selector; import datadog.trace.bootstrap.config.provider.stableconfig.StableConfig; +import datadog.trace.config.inversion.ConfigHelper; import datadog.yaml.YamlParser; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -166,7 +166,7 @@ static boolean selectorMatch(String origin, List matches, String operato if (key == null) { return false; } - String envValue = EnvironmentVariables.get(key.toUpperCase(Locale.ROOT)); + String envValue = ConfigHelper.env(key.toUpperCase(Locale.ROOT)); return matchOperator(envValue, operator, matches); case "process_arguments": if (key == null) { @@ -242,7 +242,7 @@ private static String processTemplateVar(String templateVar) throws IOException if (envVar.isEmpty()) { throw new IOException("Empty environment variable name in template"); } - String value = EnvironmentVariables.get(envVar.toUpperCase(Locale.ROOT)); + String value = ConfigHelper.env(envVar.toUpperCase(Locale.ROOT)); if (value == null || value.isEmpty()) { return UNDEFINED_VALUE; } diff --git a/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java b/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java index 53341e0a66a..48ea802b1f7 100644 --- a/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java +++ b/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java @@ -77,6 +77,14 @@ void resetToDefaults() { resetCache(); } + public static Map env() { + return get().getEnvironmentVariables(); + } + + public static String env(String key) { + return get().getEnvironmentVariable(key); + } + public Map getEnvironmentVariables() { if (!configs.isEmpty()) { return configs; @@ -122,7 +130,7 @@ public Map getEnvironmentVariables() { } public String getEnvironmentVariable(String name) { - if (configs.containsKey(name)) { + if (configs != null && configs.containsKey(name)) { return configs.get(name); } diff --git a/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java b/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java index de25a06aefe..aed77304eac 100644 --- a/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java +++ b/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java @@ -83,11 +83,11 @@ void testBasicConfigHelper() { env.set(OTEL_VAR, OTEL_VAR_VAL); env.set(REGULAR_VAR, REGULAR_VAR_VAL); - assertEquals(DD_VAR_VAL, ConfigHelper.get().getEnvironmentVariable(DD_VAR)); - assertEquals(OTEL_VAR_VAL, ConfigHelper.get().getEnvironmentVariable(OTEL_VAR)); - assertEquals(REGULAR_VAR_VAL, ConfigHelper.get().getEnvironmentVariable(REGULAR_VAR)); + assertEquals(DD_VAR_VAL, ConfigHelper.env(DD_VAR)); + assertEquals(OTEL_VAR_VAL, ConfigHelper.env(OTEL_VAR)); + assertEquals(REGULAR_VAR_VAL, ConfigHelper.env(REGULAR_VAR)); - Map result = ConfigHelper.get().getEnvironmentVariables(); + Map result = ConfigHelper.env(); assertEquals(DD_VAR_VAL, result.get(DD_VAR)); assertEquals(OTEL_VAR_VAL, result.get(OTEL_VAR)); assertEquals(REGULAR_VAR_VAL, result.get(REGULAR_VAR)); @@ -97,8 +97,8 @@ void testBasicConfigHelper() { void testAliasSupport() { env.set(ALIAS_DD_VAR, ALIAS_DD_VAL); - assertEquals(ALIAS_DD_VAL, ConfigHelper.get().getEnvironmentVariable(DD_VAR)); - Map result = ConfigHelper.get().getEnvironmentVariables(); + assertEquals(ALIAS_DD_VAL, ConfigHelper.env(DD_VAR)); + Map result = ConfigHelper.env(); assertEquals(ALIAS_DD_VAL, result.get(DD_VAR)); assertFalse(result.containsKey(ALIAS_DD_VAR)); } @@ -109,8 +109,8 @@ void testMainConfigPrecedence() { env.set(DD_VAR, DD_VAR_VAL); env.set(ALIAS_DD_VAR, ALIAS_DD_VAL); - assertEquals(DD_VAR_VAL, ConfigHelper.get().getEnvironmentVariable(DD_VAR)); - Map result = ConfigHelper.get().getEnvironmentVariables(); + assertEquals(DD_VAR_VAL, ConfigHelper.env(DD_VAR)); + Map result = ConfigHelper.env(); assertEquals(DD_VAR_VAL, result.get(DD_VAR)); assertFalse(result.containsKey(ALIAS_DD_VAR)); } @@ -119,15 +119,15 @@ void testMainConfigPrecedence() { void testNonDDAliases() { env.set(NON_DD_ALIAS_VAR, NON_DD_ALIAS_VAL); - assertEquals(NON_DD_ALIAS_VAL, ConfigHelper.get().getEnvironmentVariable(DD_VAR)); - Map result = ConfigHelper.get().getEnvironmentVariables(); + assertEquals(NON_DD_ALIAS_VAL, ConfigHelper.env(DD_VAR)); + Map result = ConfigHelper.env(); assertEquals(NON_DD_ALIAS_VAL, result.get(DD_VAR)); assertFalse(result.containsKey(NON_DD_ALIAS_VAR)); } @Test void testAliasesWithoutPresentAliases() { - Map result = ConfigHelper.get().getEnvironmentVariables(); + Map result = ConfigHelper.env(); assertFalse(result.containsKey(ALIAS_DD_VAR)); } @@ -141,7 +141,7 @@ void testAliasWithEmptyList() { new TestSupportedConfigurationSource( new HashSet<>(), aliasMap, new HashMap<>(), new HashMap<>())); - assertNull(ConfigHelper.get().getEnvironmentVariable("EMPTY_ALIAS_CONFIG")); + assertNull(ConfigHelper.env("EMPTY_ALIAS_CONFIG")); // Cleanup ConfigHelper.get().setConfigurationSource(testSource); @@ -152,7 +152,7 @@ void testAliasSkippedWhenBaseAlreadyPresent() { env.set(DD_VAR, DD_VAR_VAL); env.set(NON_DD_ALIAS_VAR, NON_DD_ALIAS_VAL); - Map result = ConfigHelper.get().getEnvironmentVariables(); + Map result = ConfigHelper.env(); assertEquals(DD_VAR_VAL, result.get(DD_VAR)); assertFalse(result.containsKey(NON_DD_ALIAS_VAR)); } @@ -161,7 +161,7 @@ void testAliasSkippedWhenBaseAlreadyPresent() { void testInconsistentAliasesAndAliasMapping() { env.set(NEW_ALIAS_KEY_2, "some_value"); - Map result = ConfigHelper.get().getEnvironmentVariables(); + Map result = ConfigHelper.env(); assertFalse(result.containsKey(NEW_ALIAS_KEY_2)); assertFalse(result.containsKey(NEW_ALIAS_TARGET)); @@ -174,7 +174,7 @@ void testUnsupportedEnvWarningNotInTestMode() { env.set("DD_FAKE_VAR", "banana"); // Should allow unsupported variable in TEST mode - assertEquals("banana", ConfigHelper.get().getEnvironmentVariable("DD_FAKE_VAR")); + assertEquals("banana", ConfigHelper.env("DD_FAKE_VAR")); // Cleanup ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT); @@ -184,12 +184,12 @@ void testUnsupportedEnvWarningNotInTestMode() { void testCache() { env.set(DD_VAR, DD_VAR_VAL); - Map result = ConfigHelper.get().getEnvironmentVariables(); + Map result = ConfigHelper.env(); assertEquals(DD_VAR_VAL, result.get(DD_VAR)); // Ensure that the cached value is returned env.set(DD_VAR, ALIAS_DD_VAL); assertEquals(DD_VAR_VAL, result.get(DD_VAR)); - assertEquals(DD_VAR_VAL, ConfigHelper.get().getEnvironmentVariable(DD_VAR)); + assertEquals(DD_VAR_VAL, ConfigHelper.env(DD_VAR)); } } diff --git a/utils/container-utils/build.gradle.kts b/utils/container-utils/build.gradle.kts index 2b7578a2785..2e1d0bce92f 100644 --- a/utils/container-utils/build.gradle.kts +++ b/utils/container-utils/build.gradle.kts @@ -5,7 +5,7 @@ plugins { apply(from = "$rootDir/gradle/java.gradle") dependencies { - implementation(project(":components:environment")) + implementation(project(":utils:config-utils")) implementation(libs.slf4j) testImplementation(project(":utils:test-utils")) diff --git a/utils/container-utils/src/main/java/datadog/common/container/ServerlessInfo.java b/utils/container-utils/src/main/java/datadog/common/container/ServerlessInfo.java index a068e6d49c2..c299be8b34a 100644 --- a/utils/container-utils/src/main/java/datadog/common/container/ServerlessInfo.java +++ b/utils/container-utils/src/main/java/datadog/common/container/ServerlessInfo.java @@ -1,6 +1,6 @@ package datadog.common.container; -import datadog.environment.EnvironmentVariables; +import datadog.trace.config.inversion.ConfigHelper; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.File; @@ -13,7 +13,7 @@ public class ServerlessInfo { private final boolean hasExtension; private ServerlessInfo(final String extensionPath) { - this.functionName = EnvironmentVariables.get(AWS_FUNCTION_VARIABLE); + this.functionName = ConfigHelper.env(AWS_FUNCTION_VARIABLE); if (null == extensionPath) { this.hasExtension = false; } else {