Skip to content

Commit 9660b1a

Browse files
committed
adding flag for strictness
1 parent 8dd50e0 commit 9660b1a

File tree

6 files changed

+56
-18
lines changed

6 files changed

+56
-18
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ spotlessPredeclare {
6666
}
6767
}
6868
apply from: "$rootDir/gradle/spotless.gradle"
69-
apply from: "$rootDir/gradle/logEnvVarUsages.gradle"
69+
apply from: "$rootDir/gradle/configInversionLinter.gradle"
7070

7171
def compileTask = tasks.register("compile")
7272

components/environment/src/main/java/datadog/environment/ConfigHelper.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,15 @@
77

88
@SuppressForbidden
99
public class ConfigHelper {
10-
// Parse the supported-configurations JSON once using ParseSupportedConfigurations.
10+
private static boolean configInversionStrict;
11+
12+
public static void setConfigInversionStrict(boolean configInversionStrict) {
13+
ConfigHelper.configInversionStrict = configInversionStrict;
14+
}
15+
16+
public static boolean isConfigInversionStrict() {
17+
return configInversionStrict;
18+
}
1119

1220
public static Map<String, String> getEnvironmentVariables() {
1321
Map<String, String> env = System.getenv();
@@ -52,7 +60,8 @@ public static String getEnvironmentVariable(String name) {
5260
if ((name.startsWith("DD_")
5361
|| name.startsWith("OTEL_")
5462
|| GeneratedSupportedConfigurations.ALIAS_MAPPING.containsKey(name))
55-
&& !GeneratedSupportedConfigurations.SUPPORTED.contains(name)) {
63+
&& !GeneratedSupportedConfigurations.SUPPORTED.contains(name)
64+
&& configInversionStrict) {
5665
System.err.println(
5766
"Warning: Missing environment variable " + name + " from supported-configurations.json.");
5867
}

dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,5 +111,7 @@ public final class GeneralConfig {
111111
public static final String SSI_INJECTION_FORCE = "inject.force";
112112
public static final String INSTRUMENTATION_SOURCE = "instrumentation.source";
113113

114+
public static final String CONFIG_INVERSION_STRICT = "config.inversion.strict";
115+
114116
private GeneralConfig() {}
115117
}

gradle/logEnvVarUsages.gradle renamed to gradle/configInversionLinter.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ tasks.register('checkEnvironmentVariablesUsage') {
7777
include '**/src/main/java/**/*.java'
7878

7979
// Exclude specific files (relative to projectDir)
80+
exclude '**/build/**'
8081
exclude 'components/environment/src/main/java/datadog/environment/ConfigHelper.java'
8182
}
8283

@@ -92,11 +93,11 @@ tasks.register('checkEnvironmentVariablesUsage') {
9293
}
9394

9495
if (!matches.isEmpty()) {
95-
println "\n❌ Found forbidden usages of EnvironmentVariables.get(...):"
96+
println "\nFound forbidden usages of EnvironmentVariables.get(...):"
9697
matches.each { println it }
9798
throw new GradleException("Forbidden usage of EnvironmentVariables.get(...) found in Java files.")
9899
} else {
99-
println "No forbidden EnvironmentVariables.get(...) usages found in src/main/java."
100+
println "No forbidden EnvironmentVariables.get(...) usages found in src/main/java."
100101
}
101102
}
102103
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,6 +1204,8 @@ public static String getHostName() {
12041204

12051205
private final boolean telemetryDebugRequestsEnabled;
12061206

1207+
private final boolean configInversionStrict;
1208+
12071209
private final boolean agentlessLogSubmissionEnabled;
12081210
private final int agentlessLogSubmissionQueueSize;
12091211
private final String agentlessLogSubmissionLevel;
@@ -2009,6 +2011,8 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
20092011
DEFAULT_TELEMETRY_DEPENDENCY_RESOLUTION_QUEUE_SIZE);
20102012
clientIpEnabled = configProvider.getBoolean(CLIENT_IP_ENABLED, DEFAULT_CLIENT_IP_ENABLED);
20112013

2014+
configInversionStrict = ConfigHelper.isConfigInversionStrict();
2015+
20122016
appSecReportingInband =
20132017
configProvider.getBoolean(APPSEC_REPORTING_INBAND, DEFAULT_APPSEC_REPORTING_INBAND);
20142018
appSecRulesFile = configProvider.getString(APPSEC_RULES_FILE, null);
@@ -3484,6 +3488,10 @@ public boolean isClientIpEnabled() {
34843488
return clientIpEnabled;
34853489
}
34863490

3491+
public boolean isConfigInversionStrict() {
3492+
return configInversionStrict;
3493+
}
3494+
34873495
public ProductActivation getAppSecActivation() {
34883496
return instrumenterConfig.getAppSecActivation();
34893497
}
@@ -5641,6 +5649,8 @@ public String toString() {
56415649
+ grpcClientErrorStatuses
56425650
+ ", clientIpEnabled="
56435651
+ clientIpEnabled
5652+
+ ", configInversionStrict="
5653+
+ configInversionStrict
56445654
+ ", appSecReportingInband="
56455655
+ appSecReportingInband
56465656
+ ", appSecRulesFile='"

internal-api/src/main/java/datadog/trace/bootstrap/config/provider/ConfigProvider.java

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package datadog.trace.bootstrap.config.provider;
22

33
import static datadog.trace.api.config.GeneralConfig.CONFIGURATION_FILE;
4+
import static datadog.trace.api.config.GeneralConfig.CONFIG_INVERSION_STRICT;
45

6+
import datadog.environment.ConfigHelper;
57
import datadog.environment.SystemProperties;
68
import datadog.trace.api.ConfigCollector;
79
import datadog.trace.api.ConfigOrigin;
@@ -374,9 +376,14 @@ public static ConfigProvider getInstance() {
374376
}
375377

376378
public static ConfigProvider createDefault() {
377-
Properties configProperties =
378-
loadConfigurationFile(
379-
new ConfigProvider(new SystemPropertiesConfigSource(), new EnvironmentConfigSource()));
379+
ConfigProvider minimalProvider =
380+
new ConfigProvider(new SystemPropertiesConfigSource(), new EnvironmentConfigSource());
381+
382+
// TODO: Set default value to false before merging
383+
ConfigHelper.setConfigInversionStrict(
384+
minimalProvider.getBoolean(CONFIG_INVERSION_STRICT, true));
385+
386+
Properties configProperties = loadConfigurationFile(minimalProvider);
380387
if (configProperties.isEmpty()) {
381388
return new ConfigProvider(
382389
new SystemPropertiesConfigSource(),
@@ -398,10 +405,14 @@ public static ConfigProvider createDefault() {
398405
}
399406

400407
public static ConfigProvider withoutCollector() {
401-
Properties configProperties =
402-
loadConfigurationFile(
403-
new ConfigProvider(
404-
false, new SystemPropertiesConfigSource(), new EnvironmentConfigSource()));
408+
ConfigProvider minimalProvider =
409+
new ConfigProvider(
410+
false, new SystemPropertiesConfigSource(), new EnvironmentConfigSource());
411+
// TODO: Set default value to false before merging
412+
ConfigHelper.setConfigInversionStrict(
413+
minimalProvider.getBoolean(CONFIG_INVERSION_STRICT, true));
414+
415+
Properties configProperties = loadConfigurationFile(minimalProvider);
405416
if (configProperties.isEmpty()) {
406417
return new ConfigProvider(
407418
false,
@@ -426,12 +437,17 @@ public static ConfigProvider withoutCollector() {
426437

427438
public static ConfigProvider withPropertiesOverride(Properties properties) {
428439
PropertiesConfigSource providedConfigSource = new PropertiesConfigSource(properties, false);
429-
Properties configProperties =
430-
loadConfigurationFile(
431-
new ConfigProvider(
432-
new SystemPropertiesConfigSource(),
433-
new EnvironmentConfigSource(),
434-
providedConfigSource));
440+
ConfigProvider minimalProvider =
441+
new ConfigProvider(
442+
new SystemPropertiesConfigSource(),
443+
new EnvironmentConfigSource(),
444+
providedConfigSource);
445+
446+
// TODO: Set default value to false before merging
447+
ConfigHelper.setConfigInversionStrict(
448+
minimalProvider.getBoolean(CONFIG_INVERSION_STRICT, true));
449+
450+
Properties configProperties = loadConfigurationFile(minimalProvider);
435451
if (configProperties.isEmpty()) {
436452
return new ConfigProvider(
437453
new SystemPropertiesConfigSource(),

0 commit comments

Comments
 (0)