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 904a1260842..1099c78a720 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 @@ -107,6 +107,7 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ + "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.NoOpConfigInversionMetricCollector:build_time," + "datadog.trace.api.telemetry.OtelEnvMetricCollectorImpl:build_time," + "datadog.trace.api.profiling.ProfilingEnablement:build_time," + "datadog.trace.bootstrap.config.provider.ConfigConverter:build_time," diff --git a/internal-api/src/main/java/datadog/trace/api/InstrumenterConfig.java b/internal-api/src/main/java/datadog/trace/api/InstrumenterConfig.java index a2d2ae83169..e7401b04854 100644 --- a/internal-api/src/main/java/datadog/trace/api/InstrumenterConfig.java +++ b/internal-api/src/main/java/datadog/trace/api/InstrumenterConfig.java @@ -80,6 +80,8 @@ import static datadog.trace.util.CollectionUtils.tryMakeImmutableSet; import datadog.trace.api.profiling.ProfilingEnablement; +import datadog.trace.api.telemetry.ConfigInversionMetricCollectorImpl; +import datadog.trace.api.telemetry.ConfigInversionMetricCollectorProvider; import datadog.trace.api.telemetry.OtelEnvMetricCollectorImpl; import datadog.trace.api.telemetry.OtelEnvMetricCollectorProvider; import datadog.trace.bootstrap.config.provider.ConfigProvider; @@ -107,6 +109,14 @@ * @see Config for other configurations */ public class InstrumenterConfig { + static { + // skip registration when building native-images as telemetry is not available + if (!Platform.isNativeImageBuilder()) { + ConfigInversionMetricCollectorProvider.register( + ConfigInversionMetricCollectorImpl.getInstance()); + } + } + private final ConfigProvider configProvider; private final boolean triageEnabled; diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 8a90076eeac..17d7798ffef 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -632,6 +632,7 @@ "DD_TRACE_DATANUCLEUS_ANALYTICS_SAMPLE_RATE": ["A"], "DD_TRACE_DATANUCLEUS_ENABLED": ["A"], "DD_TRACE_DB2_ENABLED": ["A"], + "DD_TRACE_DBCP2_ENABLED": ["A"], "DD_TRACE_DBM_ENABLED": ["A"], "DD_TRACE_DBSTATEMENTRULE_ENABLED": ["A"], "DD_TRACE_DB_CLIENT_SPLIT_BY_HOST": ["A"], @@ -746,6 +747,7 @@ "DD_TRACE_HIBERNATE_CORE_ANALYTICS_SAMPLE_RATE": ["A"], "DD_TRACE_HIBERNATE_CORE_ENABLED": ["A"], "DD_TRACE_HIBERNATE_ENABLED": ["A"], + "DD_TRACE_HIKARI_ENABLED": ["A"], "DD_TRACE_HTTPASYNCCLIENT4_LEGACY_TRACING_ENABLED": ["A"], "DD_TRACE_HTTPASYNCCLIENT5_ENABLED": ["A"], "DD_TRACE_HTTPASYNCCLIENT_ANALYTICS_ENABLED": ["A"], @@ -1471,6 +1473,7 @@ "DD_TRACE_DATANUCLEUS_ANALYTICS_SAMPLE_RATE": ["DD_DATANUCLEUS_ANALYTICS_SAMPLE_RATE"], "DD_TRACE_DATANUCLEUS_ENABLED": ["DD_TRACE_INTEGRATION_DATANUCLEUS_ENABLED","DD_INTEGRATION_DATANUCLEUS_ENABLED"], "DD_TRACE_DB2_ENABLED": ["DD_TRACE_INTEGRATION_DB2_ENABLED","DD_INTEGRATION_DB2_ENABLED"], + "DD_TRACE_DBCP2_ENABLED": ["DD_TRACE_INTEGRATION_DBCP2_ENABLED","DD_INTEGRATION_DBCP2_ENABLED"], "DD_TRACE_DBM_ENABLED": ["DD_TRACE_INTEGRATION_DBM_ENABLED","DD_INTEGRATION_DBM_ENABLED"], "DD_TRACE_DEFINECLASS_ENABLED": ["DD_TRACE_INTEGRATION_DEFINECLASS_ENABLED","DD_INTEGRATION_DEFINECLASS_ENABLED"], "DD_TRACE_DIRECTALLOCATION_ENABLED": ["DD_TRACE_INTEGRATION_DIRECTALLOCATION_ENABLED","DD_INTEGRATION_DIRECTALLOCATION_ENABLED"], @@ -1542,6 +1545,7 @@ "DD_TRACE_HIBERNATE_CORE_ANALYTICS_SAMPLE_RATE": ["DD_HIBERNATE_CORE_ANALYTICS_SAMPLE_RATE"], "DD_TRACE_HIBERNATE_CORE_ENABLED": ["DD_TRACE_INTEGRATION_HIBERNATE_CORE_ENABLED","DD_INTEGRATION_HIBERNATE_CORE_ENABLED"], "DD_TRACE_HIBERNATE_ENABLED": ["DD_TRACE_INTEGRATION_HIBERNATE_ENABLED","DD_INTEGRATION_HIBERNATE_ENABLED"], + "DD_TRACE_HIKARI_ENABLED": ["DD_TRACE_INTEGRATION_HIKARI_ENABLED","DD_INTEGRATION_HIKARI_ENABLED"], "DD_TRACE_HTTPASYNCCLIENT4_LEGACY_TRACING_ENABLED": ["DD_HTTPASYNCCLIENT4_LEGACY_TRACING_ENABLED"], "DD_TRACE_HTTPASYNCCLIENT5_ENABLED": ["DD_TRACE_INTEGRATION_HTTPASYNCCLIENT5_ENABLED","DD_INTEGRATION_HTTPASYNCCLIENT5_ENABLED"], "DD_TRACE_HTTPASYNCCLIENT_ANALYTICS_SAMPLE_RATE": ["DD_HTTPASYNCCLIENT_ANALYTICS_SAMPLE_RATE"], 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 a66cee8f35f..1170ef70ebc 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,23 +1,12 @@ 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 static ConfigInversionMetricCollector INSTANCE = + NoOpConfigInversionMetricCollector.getInstance(); private ConfigInversionMetricCollectorProvider() {} public static ConfigInversionMetricCollector get() { - if (INSTANCE == null) { - 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 index 243510d1da9..002ae7d6198 100644 --- 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 @@ -1,5 +1,8 @@ package datadog.trace.api.telemetry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * NOOP implementation of ConfigInversionMetricCollector. Used as a default when the real collector * is not registered during build tasks like instrumentJava. @@ -8,6 +11,9 @@ public final class NoOpConfigInversionMetricCollector implements ConfigInversion private static final NoOpConfigInversionMetricCollector INSTANCE = new NoOpConfigInversionMetricCollector(); + private static final Logger log = + LoggerFactory.getLogger(NoOpConfigInversionMetricCollector.class); + private NoOpConfigInversionMetricCollector() {} public static NoOpConfigInversionMetricCollector getInstance() { @@ -16,6 +22,6 @@ public static NoOpConfigInversionMetricCollector getInstance() { @Override public void setUndocumentedEnvVarMetric(String configName) { - // NOOP - do nothing + log.debug("Environment variable {} is undocumented", configName); } }