From 071accefe25488f568bca229b4febed6bb7bfee0 Mon Sep 17 00:00:00 2001 From: Steven Hawkins Date: Mon, 5 May 2025 12:03:53 -0400 Subject: [PATCH] fix: don't treat quarkus property changes as hard errors (#39459) closes: #39450 Signed-off-by: Steve Hawkins --- .../keycloak/quarkus/runtime/cli/Picocli.java | 4 +++- .../quarkus/runtime/cli/PicocliTest.java | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/cli/Picocli.java b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/cli/Picocli.java index 568eb2f99d3..ede5161f666 100644 --- a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/cli/Picocli.java +++ b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/cli/Picocli.java @@ -357,7 +357,9 @@ public class Picocli { throw new PropertyException("A provider JAR was updated since the last build, please rebuild for this to be fully utilized."); } } else if (newValue != null && !isIgnoredPersistedOption(key) - && isUserModifiable(Configuration.getConfigValue(key))) { + && isUserModifiable(Configuration.getConfigValue(key)) + // let quarkus handle this - it's unsupported for direct usage in keycloak + && !key.startsWith(MicroProfileConfigProvider.NS_QUARKUS_PREFIX)) { ignoredBuildTime.add(key); } }); diff --git a/quarkus/runtime/src/test/java/org/keycloak/quarkus/runtime/cli/PicocliTest.java b/quarkus/runtime/src/test/java/org/keycloak/quarkus/runtime/cli/PicocliTest.java index 4548b4f49be..f5b56d760d3 100644 --- a/quarkus/runtime/src/test/java/org/keycloak/quarkus/runtime/cli/PicocliTest.java +++ b/quarkus/runtime/src/test/java/org/keycloak/quarkus/runtime/cli/PicocliTest.java @@ -26,13 +26,18 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.stream.Stream; +import org.apache.commons.io.FileUtils; import org.junit.Ignore; import org.junit.Test; import org.keycloak.config.LoggingOptions; @@ -684,6 +689,23 @@ public class PicocliTest extends AbstractConfigurationTest { assertFalse(Picocli.timestampChanged("12345", "12000")); } + @Test + public void quarkusRuntimeChangeNoError() throws IOException { + Path conf = Paths.get("src/test/resources/"); + Path tmp = Paths.get("target/home-tmp"); + FileUtils.copyDirectory(conf.toFile(), tmp.toFile()); + Files.delete(tmp.resolve("conf/quarkus.properties")); + Environment.setHomeDir(tmp); + try { + build("build", "--db=dev-file"); + } finally { + Environment.setHomeDir(conf); + } + + var nonRunningPicocli = pseudoLaunch("start", "--optimized", "--http-enabled=true", "--hostname=foo"); + assertEquals(CommandLine.ExitCode.OK, nonRunningPicocli.exitCode); + } + protected void assertLogAsyncHandlerInvalidValues(LoggingOptions.Handler handler) { var handlerName = handler.toString();