From d5ace369bdff311f764be572ff1c2f92a5a62484 Mon Sep 17 00:00:00 2001 From: 2heunxun Date: Tue, 25 Aug 2026 21:25:45 +0900 Subject: [PATCH] Fix LdapHealthIndicator reporting when LDAP version is unavailable Fix regression caused by commit d26b6895 which caused `doHealthCheck()` to only call `builder.up()` when the LDAP server's protocol version (`java.naming.ldap.version`) could be read from the JNDI environment. See gh-51441 Signed-off-by: 2heunxun --- .../boot/ldap/health/LdapHealthIndicator.java | 3 ++- .../boot/ldap/health/LdapHealthIndicatorTests.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/module/spring-boot-ldap/src/main/java/org/springframework/boot/ldap/health/LdapHealthIndicator.java b/module/spring-boot-ldap/src/main/java/org/springframework/boot/ldap/health/LdapHealthIndicator.java index df021b8430b..e25e4f69652 100644 --- a/module/spring-boot-ldap/src/main/java/org/springframework/boot/ldap/health/LdapHealthIndicator.java +++ b/module/spring-boot-ldap/src/main/java/org/springframework/boot/ldap/health/LdapHealthIndicator.java @@ -50,8 +50,9 @@ public class LdapHealthIndicator extends AbstractHealthIndicator { @Override protected void doHealthCheck(Health.Builder builder) throws Exception { String version = this.ldapOperations.executeReadOnly(versionContextExecutor); + builder.up(); if (version != null) { - builder.up().withDetail("version", version); + builder.withDetail("version", version); } } diff --git a/module/spring-boot-ldap/src/test/java/org/springframework/boot/ldap/health/LdapHealthIndicatorTests.java b/module/spring-boot-ldap/src/test/java/org/springframework/boot/ldap/health/LdapHealthIndicatorTests.java index eef8eb4fa2a..a06feb358d0 100644 --- a/module/spring-boot-ldap/src/test/java/org/springframework/boot/ldap/health/LdapHealthIndicatorTests.java +++ b/module/spring-boot-ldap/src/test/java/org/springframework/boot/ldap/health/LdapHealthIndicatorTests.java @@ -49,6 +49,18 @@ class LdapHealthIndicatorTests { then(ldapTemplate).should().executeReadOnly((ContextExecutor) any()); } + @Test + @SuppressWarnings("unchecked") + void ldapIsUpWhenVersionIsUnavailable() { + LdapTemplate ldapTemplate = mock(LdapTemplate.class); + given(ldapTemplate.executeReadOnly((ContextExecutor) any())).willReturn(null); + LdapHealthIndicator healthIndicator = new LdapHealthIndicator(ldapTemplate); + Health health = healthIndicator.health(); + assertThat(health.getStatus()).isEqualTo(Status.UP); + assertThat(health.getDetails()).doesNotContainKey("version"); + then(ldapTemplate).should().executeReadOnly((ContextExecutor) any()); + } + @Test @SuppressWarnings("unchecked") void ldapIsDown() {