diff --git a/bom/application/pom.xml b/bom/application/pom.xml index 5c60d85458a32..b7e699c571f71 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -41,7 +41,7 @@ 1.0 1.13.1 2.12.0 - 3.2.1 + 3.3.0 3.0.5 2.2.1 1.7.1 diff --git a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthConfig.java b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthConfig.java index 8241dc9c1e0ce..08a1066afeea5 100644 --- a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthConfig.java +++ b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthConfig.java @@ -1,5 +1,7 @@ package io.quarkus.smallrye.health.deployment; +import java.util.OptionalInt; + import io.quarkus.runtime.annotations.ConfigDocSection; import io.quarkus.runtime.annotations.ConfigItem; import io.quarkus.runtime.annotations.ConfigRoot; @@ -55,6 +57,12 @@ public class SmallRyeHealthConfig { @ConfigItem(defaultValue = "false") boolean contextPropagation; + /** + * The number of the maximum health groups that can be created. + */ + @ConfigItem + OptionalInt maxGroupRegistriesCount; + /** * SmallRye Health UI configuration */ diff --git a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java index 539db291a350c..13b3b9bb9272b 100644 --- a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java +++ b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java @@ -242,14 +242,12 @@ public void defineHealthRoutes(BuildProducer routes, .build()); SmallRyeIndividualHealthGroupHandler handler = new SmallRyeIndividualHealthGroupHandler(); - for (String healthGroup : healthGroups) { - routes.produce(nonApplicationRootPathBuildItem.routeBuilder() - .nestedRoute(healthConfig.rootPath, healthConfig.groupPath + "/" + healthGroup) - .handler(handler) - .displayOnNotFoundPage() - .blockingRoute() - .build()); - } + routes.produce(nonApplicationRootPathBuildItem.routeBuilder() + .nestedRoute(healthConfig.rootPath, healthConfig.groupPath + "/*") + .handler(handler) + .displayOnNotFoundPage() + .blockingRoute() + .build()); // Register the wellness handler routes.produce(nonApplicationRootPathBuildItem.routeBuilder() @@ -275,6 +273,10 @@ public void processSmallRyeHealthConfigValues(SmallRyeHealthConfig healthConfig, if (healthConfig.contextPropagation) { config.produce(new RunTimeConfigurationDefaultBuildItem("io.smallrye.health.context.propagation", "true")); } + if (healthConfig.maxGroupRegistriesCount.isPresent()) { + config.produce(new RunTimeConfigurationDefaultBuildItem("io.smallrye.health.maxGroupRegistriesCount", + String.valueOf(healthConfig.maxGroupRegistriesCount.getAsInt()))); + } config.produce(new RunTimeConfigurationDefaultBuildItem("io.smallrye.health.delayChecksInitializations", "true")); } diff --git a/extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/MaxHealthGroupTest.java b/extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/MaxHealthGroupTest.java new file mode 100644 index 0000000000000..7074da671b85d --- /dev/null +++ b/extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/MaxHealthGroupTest.java @@ -0,0 +1,42 @@ +package io.quarkus.smallrye.health.test; + +import static org.hamcrest.Matchers.is; + +import org.hamcrest.Matchers; +import org.jboss.shrinkwrap.api.asset.EmptyAsset; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.test.QuarkusUnitTest; +import io.restassured.RestAssured; +import io.restassured.parsing.Parser; + +public class MaxHealthGroupTest { + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .withApplicationRoot((jar) -> jar + .addClasses(BasicHealthCheck.class) + .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml")) + .overrideConfigKey("quarkus.smallrye-health.max-group-registries-count", "3"); + + @Test + public void testMaxGroupRegistriesCreations() { + try { + RestAssured.defaultParser = Parser.JSON; + + for (int i = 0; i < 3; i++) { + RestAssured.get("/q/health/group/" + i).then() + .statusCode(200) + .body("status", is("UP"), + "checks.size()", is(0)); + } + RestAssured.when().get("/q/health/group/not-allowed").then() + .statusCode(500) + .body("details", Matchers.endsWith("3")); + } finally { + RestAssured.reset(); + } + } + +} diff --git a/jakarta/rewrite.yml b/jakarta/rewrite.yml index 6784f8459c14b..48862d42bee1a 100644 --- a/jakarta/rewrite.yml +++ b/jakarta/rewrite.yml @@ -547,7 +547,7 @@ recipeList: newValue: 2.0.0.RC8 - org.openrewrite.maven.ChangePropertyValue: key: smallrye-health.version - newValue: 4.0.0-RC2 + newValue: 4.0.0 - org.openrewrite.maven.ChangePropertyValue: key: microprofile-jwt.version newValue: 2.0