Skip to content

Commit af63349

Browse files
[mq] [skip ddci] working branch - merge 6ddd1eb on top of master at 8100e2b
{"baseBranch":"master","baseCommit":"8100e2bc43ee9afe37034c2b409ce9961983f1fc","createdAt":"2026-04-06T13:47:23.897137Z","headSha":"6ddd1eb29866e7bc5a195797c432f3947751db8a","id":"e653fd04-aead-4bda-b58f-871e29a7fcb7","priority":"200","pullRequestNumber":"11031","queuedAt":"2026-04-06T13:47:23.895902Z","status":"STATUS_QUEUED"}
2 parents 4bdf9e0 + 6ddd1eb commit af63349

2 files changed

Lines changed: 25 additions & 5 deletions

File tree

utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import datadog.environment.EnvironmentVariables;
44
import datadog.trace.api.telemetry.ConfigInversionMetricCollectorProvider;
5+
import java.util.ArrayList;
56
import java.util.Collections;
67
import java.util.HashMap;
78
import java.util.List;
89
import java.util.Locale;
910
import java.util.Map;
11+
import java.util.Set;
12+
import java.util.concurrent.ConcurrentHashMap;
1013
import org.slf4j.Logger;
1114
import org.slf4j.LoggerFactory;
1215

@@ -15,7 +18,7 @@ private ConfigHelper() {}
1518

1619
/** Config Inversion strictness policy for enforcement of undocumented environment variables */
1720
public enum StrictnessPolicy {
18-
STRICT,
21+
STRICT_TEST,
1922
WARNING,
2023
TEST;
2124

@@ -49,6 +52,9 @@ public String toString() {
4952
// Default to production source
5053
private SupportedConfigurationSource configSource = new SupportedConfigurationSource();
5154

55+
// Collects unsupported config keys encountered in STRICT_TEST mode
56+
private final Set<String> unsupportedConfigs = ConcurrentHashMap.newKeySet();
57+
5258
public static ConfigHelper get() {
5359
return INSTANCE;
5460
}
@@ -75,9 +81,18 @@ void resetCache() {
7581
void resetToDefaults() {
7682
configSource = new SupportedConfigurationSource();
7783
this.configInversionStrict = StrictnessPolicy.WARNING;
84+
unsupportedConfigs.clear();
7885
resetCache();
7986
}
8087

88+
/** Returns and clears the set of unsupported config keys encountered in STRICT_TEST mode. */
89+
public List<String> drainUnsupportedConfigs() {
90+
List<String> result = new ArrayList<>(unsupportedConfigs);
91+
unsupportedConfigs.clear();
92+
Collections.sort(result);
93+
return result;
94+
}
95+
8196
public static Map<String, String> env() {
8297
return get().getEnvironmentVariables();
8398
}
@@ -142,8 +157,13 @@ public String getEnvironmentVariable(String name) {
142157
ConfigInversionMetricCollectorProvider.get().setUndocumentedEnvVarMetric(name);
143158
}
144159

145-
if (configInversionStrict == StrictnessPolicy.STRICT) {
146-
return null; // If strict mode is enabled, return null for unsupported configs
160+
if (configInversionStrict == StrictnessPolicy.STRICT_TEST) {
161+
unsupportedConfigs.add(name);
162+
throw new IllegalArgumentException(
163+
"Unsupported configuration: "
164+
+ name
165+
+ " is not in GeneratedSupportedConfigurations. "
166+
+ "Add it to metadata/supported-configurations.json or remove the usage.");
147167
}
148168
}
149169

utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ static void setUp() {
6262
testSupported, testAliases, testAliasMapping, new HashMap<>());
6363
ConfigHelper.get().setConfigurationSource(testSource);
6464
strictness = ConfigHelper.get().configInversionStrictFlag();
65-
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT);
65+
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT_TEST);
6666
}
6767

6868
@AfterAll
@@ -177,7 +177,7 @@ void testUnsupportedEnvWarningNotInTestMode() {
177177
assertEquals("banana", ConfigHelper.env("DD_FAKE_VAR"));
178178

179179
// Cleanup
180-
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT);
180+
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT_TEST);
181181
}
182182

183183
@Test

0 commit comments

Comments
 (0)