Skip to content

Commit 8a8613b

Browse files
committed
ConfigProvider.getConfig() different classloader issue
1 parent e563ec5 commit 8a8613b

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/AppCDSBuildStep.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.quarkus.deployment.pkg.steps;
22

33
import static io.quarkus.deployment.pkg.steps.LinuxIDUtil.getLinuxID;
4+
import static io.quarkus.runtime.util.ContainerRuntimeUtil.detectContainerRuntime;
45

56
import java.io.File;
67
import java.io.IOException;
@@ -13,7 +14,6 @@
1314
import java.util.function.BooleanSupplier;
1415

1516
import org.apache.commons.lang3.SystemUtils;
16-
import org.eclipse.microprofile.config.ConfigProvider;
1717
import org.jboss.logging.Logger;
1818

1919
import io.quarkus.bootstrap.util.IoUtils;
@@ -38,8 +38,7 @@ public class AppCDSBuildStep {
3838
public static final String CLASSES_LIST_FILE_NAME = "classes.lst";
3939
private static final String CONTAINER_IMAGE_BASE_BUILD_DIR = "/tmp/quarkus";
4040
private static final String CONTAINER_IMAGE_APPCDS_DIR = CONTAINER_IMAGE_BASE_BUILD_DIR + "/appcds";
41-
public static final String DOCKER_EXECUTABLE = ConfigProvider.getConfig()
42-
.getOptionalValue("quarkus.native.container-runtime", String.class).orElse("docker");
41+
public static final String DOCKER_EXECUTABLE = detectContainerRuntime().getExecutableName();
4342

4443
@BuildStep(onlyIf = AppCDSRequired.class)
4544
public void requested(OutputTargetBuildItem outputTarget, BuildProducer<AppCDSRequestedBuildItem> producer)

core/runtime/src/main/java/io/quarkus/runtime/util/ContainerRuntimeUtil.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@
1111
import org.eclipse.microprofile.config.ConfigProvider;
1212
import org.jboss.logging.Logger;
1313

14+
import io.smallrye.config.SmallRyeConfig;
15+
1416
public final class ContainerRuntimeUtil {
1517

1618
private static final Logger log = Logger.getLogger(ContainerRuntimeUtil.class);
19+
private static final String DOCKER_EXECUTABLE = ConfigProvider.getConfig().unwrap(SmallRyeConfig.class)
20+
.getOptionalValue("quarkus.native.container-runtime", String.class).orElse(null);
1721

1822
private ContainerRuntimeUtil() {
1923
}
@@ -32,13 +36,10 @@ public static ContainerRuntime detectContainerRuntime() {
3236
// podman version 2.1.1
3337
String podmanVersionOutput = getVersionOutputFor(ContainerRuntime.PODMAN);
3438
boolean podmanAvailable = podmanVersionOutput.startsWith("podman version");
35-
36-
final String executable = ConfigProvider.getConfig()
37-
.getOptionalValue("quarkus.native.container-runtime", String.class).orElse(null);
38-
if (executable != null) {
39-
if (executable.trim().equalsIgnoreCase("docker") && dockerAvailable) {
39+
if (DOCKER_EXECUTABLE != null) {
40+
if (DOCKER_EXECUTABLE.trim().equalsIgnoreCase("docker") && dockerAvailable) {
4041
return ContainerRuntime.DOCKER;
41-
} else if (executable.trim().equalsIgnoreCase("podman") && podmanAvailable) {
42+
} else if (DOCKER_EXECUTABLE.trim().equalsIgnoreCase("podman") && podmanAvailable) {
4243
return ContainerRuntime.PODMAN;
4344
} else {
4445
log.warn("quarkus.native.container-runtime config property must be set to either podman or docker " +

test-framework/junit5/src/main/java/io/quarkus/test/junit/IntegrationTestUtil.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.quarkus.test.junit;
22

3+
import static io.quarkus.runtime.util.ContainerRuntimeUtil.detectContainerRuntime;
34
import static io.quarkus.test.common.PathTestHelper.getAppClassLocationForTestLocation;
45
import static io.quarkus.test.common.PathTestHelper.getTestClassesLocation;
56
import static java.lang.ProcessBuilder.Redirect.DISCARD;
@@ -34,7 +35,6 @@
3435

3536
import org.apache.commons.lang3.RandomStringUtils;
3637
import org.eclipse.microprofile.config.Config;
37-
import org.eclipse.microprofile.config.ConfigProvider;
3838
import org.eclipse.microprofile.config.inject.ConfigProperty;
3939
import org.jboss.jandex.Index;
4040
import org.junit.jupiter.api.extension.ExtensionContext;
@@ -64,9 +64,7 @@ public final class IntegrationTestUtil {
6464
public static final int DEFAULT_PORT = 8081;
6565
public static final int DEFAULT_HTTPS_PORT = 8444;
6666
public static final long DEFAULT_WAIT_TIME_SECONDS = 60;
67-
68-
private static final String DOCKER_BINARY = ConfigProvider.getConfig()
69-
.getOptionalValue("quarkus.native.container-runtime", String.class).orElse("docker");
67+
private static final String DOCKER_BINARY = detectContainerRuntime().getExecutableName();
7068

7169
private IntegrationTestUtil() {
7270
}

0 commit comments

Comments
 (0)