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
pull/22996/head
Brian Clozel 4 years ago
parent 4aa010c874
commit 8dedeb4c6a

@ -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));
}

Loading…
Cancel
Save