Fix missing liveness and readiness indicators
Prior to this commit, the livenessState and readinessState health indicators would not be configured automatically and would be missing from the "liveness" and "readiness" health groups, leading to 404s when hitting the `/actuator/health/liveness` or `/actuator/health/readiness`. This commit ensures that the health indicators beans have the proper name and revisits the auto-configuration conditions to reflect that as well. Fixes gh-22562
This commit is contained in:
@@ -40,14 +40,14 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class AvailabilityHealthContributorAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@ConditionalOnMissingBean(name = "livenessStateHealthIndicator")
|
||||
@ConditionalOnProperty(prefix = "management.health.livenessstate", name = "enabled", havingValue = "true")
|
||||
public LivenessStateHealthIndicator livenessStateHealthIndicator(ApplicationAvailability applicationAvailability) {
|
||||
return new LivenessStateHealthIndicator(applicationAvailability);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@ConditionalOnMissingBean(name = "readinessStateHealthIndicator")
|
||||
@ConditionalOnProperty(prefix = "management.health.readinessstate", name = "enabled", havingValue = "true")
|
||||
public ReadinessStateHealthIndicator readinessStateHealthIndicator(
|
||||
ApplicationAvailability applicationAvailability) {
|
||||
|
||||
@@ -48,14 +48,15 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
||||
public class AvailabilityProbesAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public LivenessStateHealthIndicator livenessStateProbeIndicator(ApplicationAvailability applicationAvailability) {
|
||||
@ConditionalOnMissingBean(name = "livenessStateHealthIndicator")
|
||||
public LivenessStateHealthIndicator livenessStateHealthIndicator(ApplicationAvailability applicationAvailability) {
|
||||
return new LivenessStateHealthIndicator(applicationAvailability);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public ReadinessStateHealthIndicator readinessStateProbeIndicator(ApplicationAvailability applicationAvailability) {
|
||||
@ConditionalOnMissingBean(name = "readinessStateHealthIndicator")
|
||||
public ReadinessStateHealthIndicator readinessStateHealthIndicator(
|
||||
ApplicationAvailability applicationAvailability) {
|
||||
return new ReadinessStateHealthIndicator(applicationAvailability);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,8 +50,8 @@ class AvailabilityProbesAutoConfigurationTests {
|
||||
void probesWhenKubernetesAddsBeans() {
|
||||
this.contextRunner.withPropertyValues("spring.main.cloud-platform=kubernetes")
|
||||
.run((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class)
|
||||
.hasSingleBean(LivenessStateHealthIndicator.class)
|
||||
.hasSingleBean(ReadinessStateHealthIndicator.class)
|
||||
.hasSingleBean(LivenessStateHealthIndicator.class).hasBean("livenessStateHealthIndicator")
|
||||
.hasSingleBean(ReadinessStateHealthIndicator.class).hasBean("readinessStateHealthIndicator")
|
||||
.hasSingleBean(AvailabilityProbesHealthEndpointGroupsPostProcessor.class));
|
||||
}
|
||||
|
||||
@@ -59,8 +59,8 @@ class AvailabilityProbesAutoConfigurationTests {
|
||||
void probesWhenPropertyEnabledAddsBeans() {
|
||||
this.contextRunner.withPropertyValues("management.endpoint.health.probes.enabled=true")
|
||||
.run((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class)
|
||||
.hasSingleBean(LivenessStateHealthIndicator.class)
|
||||
.hasSingleBean(ReadinessStateHealthIndicator.class)
|
||||
.hasSingleBean(LivenessStateHealthIndicator.class).hasBean("livenessStateHealthIndicator")
|
||||
.hasSingleBean(ReadinessStateHealthIndicator.class).hasBean("readinessStateHealthIndicator")
|
||||
.hasSingleBean(AvailabilityProbesHealthEndpointGroupsPostProcessor.class));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user