Skip to content

Commit 997dd8b

Browse files
committed
adding flag for strictness
1 parent 93e13ca commit 997dd8b

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
@@ -1199,6 +1199,8 @@ public static String getHostName() {
11991199

12001200
private final boolean telemetryDebugRequestsEnabled;
12011201

1202+
private final boolean configInversionStrict;
1203+
12021204
private final boolean agentlessLogSubmissionEnabled;
12031205
private final int agentlessLogSubmissionQueueSize;
12041206
private final String agentlessLogSubmissionLevel;
@@ -1996,6 +1998,8 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
19961998
DEFAULT_TELEMETRY_DEPENDENCY_RESOLUTION_QUEUE_SIZE);
19971999
clientIpEnabled = configProvider.getBoolean(CLIENT_IP_ENABLED, DEFAULT_CLIENT_IP_ENABLED);
19982000

2001+
configInversionStrict = ConfigHelper.isConfigInversionStrict();
2002+
19992003
appSecReportingInband =
20002004
configProvider.getBoolean(APPSEC_REPORTING_INBAND, DEFAULT_APPSEC_REPORTING_INBAND);
20012005
appSecRulesFile = configProvider.getString(APPSEC_RULES_FILE, null);
@@ -3466,6 +3470,10 @@ public boolean isClientIpEnabled() {
34663470
return clientIpEnabled;
34673471
}
34683472

3473+
public boolean isConfigInversionStrict() {
3474+
return configInversionStrict;
3475+
}
3476+
34693477
public ProductActivation getAppSecActivation() {
34703478
return instrumenterConfig.getAppSecActivation();
34713479
}
@@ -5617,6 +5625,8 @@ public String toString() {
56175625
+ grpcClientErrorStatuses
56185626
+ ", clientIpEnabled="
56195627
+ clientIpEnabled
5628+
+ ", configInversionStrict="
5629+
+ configInversionStrict
56205630
+ ", appSecReportingInband="
56215631
+ appSecReportingInband
56225632
+ ", 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.trace.api.ConfigCollector;
68
import datadog.trace.api.ConfigOrigin;
79
import de.thetaphi.forbiddenapis.SuppressForbidden;
@@ -373,9 +375,14 @@ public static ConfigProvider getInstance() {
373375
}
374376

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

399406
public static ConfigProvider withoutCollector() {
400-
Properties configProperties =
401-
loadConfigurationFile(
402-
new ConfigProvider(
403-
false, new SystemPropertiesConfigSource(), new EnvironmentConfigSource()));
407+
ConfigProvider minimalProvider =
408+
new ConfigProvider(
409+
false, new SystemPropertiesConfigSource(), new EnvironmentConfigSource());
410+
// TODO: Set default value to false before merging
411+
ConfigHelper.setConfigInversionStrict(
412+
minimalProvider.getBoolean(CONFIG_INVERSION_STRICT, true));
413+
414+
Properties configProperties = loadConfigurationFile(minimalProvider);
404415
if (configProperties.isEmpty()) {
405416
return new ConfigProvider(
406417
false,
@@ -425,12 +436,17 @@ public static ConfigProvider withoutCollector() {
425436

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

0 commit comments

Comments
 (0)