Skip to content

Commit 408dee6

Browse files
committed
tracking missing cachingRelevantProperties for configuration cache
1 parent 6afc1fd commit 408dee6

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/BaseConfig.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,22 @@ Manifest manifest() {
5858
Map<String, String> cachingRelevantProperties(List<String> propertyPatterns) {
5959
List<Pattern> patterns = propertyPatterns.stream().map(s -> "^(" + s + ")$").map(Pattern::compile)
6060
.collect(Collectors.toList());
61+
readMissingEnvVariables(propertyPatterns);
6162
Predicate<Map.Entry<String, ?>> keyPredicate = e -> patterns.stream().anyMatch(p -> p.matcher(e.getKey()).matches());
6263
return values.entrySet().stream()
6364
.filter(keyPredicate)
6465
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (s, s2) -> {
6566
throw new IllegalArgumentException("Duplicate key");
6667
}, TreeMap::new));
6768
}
69+
70+
/**
71+
* Reads missing environment variables that have been defined as `cachingRelevantProperties`.
72+
* This ensures that the configuration cache tracks these variables as inputs and detects changes in them.
73+
*/
74+
private void readMissingEnvVariables(List<String> cachingRelevantProperties) {
75+
cachingRelevantProperties.stream()
76+
.filter(name -> !values.containsKey(name))
77+
.forEach(name -> System.getenv(name));
78+
}
6879
}

devtools/gradle/gradle-application-plugin/src/test/java/io/quarkus/gradle/tasks/CachingTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void envChangeInvalidatesBuild() throws Exception {
8181
"-Dquarkus.randomized.value=" + UUID.randomUUID())
8282
.toArray(new String[0]);
8383

84-
Map<String, String> env = Map.of("FOO_ENV_VAR", "initial-value");
84+
Map<String, String> env = Map.of();
8585
assertBuildResult("initial", gradleBuild(rerunTasks(arguments), env), ALL_SUCCESS);
8686
assertBuildResult("initial rebuild", gradleBuild(arguments, env), ALL_UP_TO_DATE);
8787

0 commit comments

Comments
 (0)