Skip to content

Commit 8dedeb4

Browse files
committed
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
1 parent 4aa010c commit 8dedeb4

File tree

3 files changed

+11
-10
lines changed

3 files changed

+11
-10
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityHealthContributorAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@
4040
public class AvailabilityHealthContributorAutoConfiguration {
4141

4242
@Bean
43-
@ConditionalOnMissingBean
43+
@ConditionalOnMissingBean(name = "livenessStateHealthIndicator")
4444
@ConditionalOnProperty(prefix = "management.health.livenessstate", name = "enabled", havingValue = "true")
4545
public LivenessStateHealthIndicator livenessStateHealthIndicator(ApplicationAvailability applicationAvailability) {
4646
return new LivenessStateHealthIndicator(applicationAvailability);
4747
}
4848

4949
@Bean
50-
@ConditionalOnMissingBean
50+
@ConditionalOnMissingBean(name = "readinessStateHealthIndicator")
5151
@ConditionalOnProperty(prefix = "management.health.readinessstate", name = "enabled", havingValue = "true")
5252
public ReadinessStateHealthIndicator readinessStateHealthIndicator(
5353
ApplicationAvailability applicationAvailability) {

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfiguration.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,15 @@
4848
public class AvailabilityProbesAutoConfiguration {
4949

5050
@Bean
51-
@ConditionalOnMissingBean
52-
public LivenessStateHealthIndicator livenessStateProbeIndicator(ApplicationAvailability applicationAvailability) {
51+
@ConditionalOnMissingBean(name = "livenessStateHealthIndicator")
52+
public LivenessStateHealthIndicator livenessStateHealthIndicator(ApplicationAvailability applicationAvailability) {
5353
return new LivenessStateHealthIndicator(applicationAvailability);
5454
}
5555

5656
@Bean
57-
@ConditionalOnMissingBean
58-
public ReadinessStateHealthIndicator readinessStateProbeIndicator(ApplicationAvailability applicationAvailability) {
57+
@ConditionalOnMissingBean(name = "readinessStateHealthIndicator")
58+
public ReadinessStateHealthIndicator readinessStateHealthIndicator(
59+
ApplicationAvailability applicationAvailability) {
5960
return new ReadinessStateHealthIndicator(applicationAvailability);
6061
}
6162

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesAutoConfigurationTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,17 @@ void probesWhenNotKubernetesAddsNoBeans() {
5050
void probesWhenKubernetesAddsBeans() {
5151
this.contextRunner.withPropertyValues("spring.main.cloud-platform=kubernetes")
5252
.run((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class)
53-
.hasSingleBean(LivenessStateHealthIndicator.class)
54-
.hasSingleBean(ReadinessStateHealthIndicator.class)
53+
.hasSingleBean(LivenessStateHealthIndicator.class).hasBean("livenessStateHealthIndicator")
54+
.hasSingleBean(ReadinessStateHealthIndicator.class).hasBean("readinessStateHealthIndicator")
5555
.hasSingleBean(AvailabilityProbesHealthEndpointGroupsPostProcessor.class));
5656
}
5757

5858
@Test
5959
void probesWhenPropertyEnabledAddsBeans() {
6060
this.contextRunner.withPropertyValues("management.endpoint.health.probes.enabled=true")
6161
.run((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class)
62-
.hasSingleBean(LivenessStateHealthIndicator.class)
63-
.hasSingleBean(ReadinessStateHealthIndicator.class)
62+
.hasSingleBean(LivenessStateHealthIndicator.class).hasBean("livenessStateHealthIndicator")
63+
.hasSingleBean(ReadinessStateHealthIndicator.class).hasBean("readinessStateHealthIndicator")
6464
.hasSingleBean(AvailabilityProbesHealthEndpointGroupsPostProcessor.class));
6565
}
6666

0 commit comments

Comments
 (0)