From 4c863c52108ba3e82b1b9c10b12e0a1243ede83e Mon Sep 17 00:00:00 2001 From: Huang Xiao Date: Wed, 10 Dec 2025 10:15:38 +0800 Subject: [PATCH 1/2] Use 'unknown' when RabbitMQ version is missing See gh-48484 Signed-off-by: Huang Xiao --- .../boot/actuate/amqp/RabbitHealthIndicator.java | 6 ++++-- .../boot/actuate/amqp/RabbitHealthIndicatorTests.java | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicator.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicator.java index 608d30a309e..49477349fb1 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicator.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicator.java @@ -45,8 +45,10 @@ public class RabbitHealthIndicator extends AbstractHealthIndicator { } private String getVersion() { - return this.rabbitTemplate - .execute((channel) -> channel.getConnection().getServerProperties().get("version").toString()); + return this.rabbitTemplate.execute((channel) -> channel.getConnection() + .getServerProperties() + .getOrDefault("version", "unknown") + .toString()); } } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java index 08b05ae9f53..01f4c19497c 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java @@ -75,6 +75,17 @@ class RabbitHealthIndicatorTests { assertThat(health.getStatus()).isEqualTo(Status.DOWN); } + @Test + void healthWhenVersionIsMissingShouldReturnUpWithUnknownVersion() { + givenTemplateExecutionWillInvokeCallback(); + Connection connection = mock(Connection.class); + given(this.channel.getConnection()).willReturn(connection); + given(connection.getServerProperties()).willReturn(Collections.emptyMap()); + Health health = new RabbitHealthIndicator(this.rabbitTemplate).health(); + assertThat(health.getStatus()).isEqualTo(Status.UP); + assertThat(health.getDetails()).containsEntry("version", "unknown"); + } + private void givenTemplateExecutionWillInvokeCallback() { given(this.rabbitTemplate.execute(any())).willAnswer((invocation) -> { ChannelCallback callback = invocation.getArgument(0); From 26fc091c509389b72d77eee98580bdc2f6064779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Wed, 10 Dec 2025 10:14:30 +0100 Subject: [PATCH 2/2] Polish "Use 'unknown' when RabbitMQ version is missing" See gh-48484 --- .../actuate/amqp/RabbitHealthIndicatorTests.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java index 01f4c19497c..6321c633899 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java @@ -67,14 +67,6 @@ class RabbitHealthIndicatorTests { assertThat(health.getDetails()).containsEntry("version", "123"); } - @Test - void healthWhenConnectionFailsShouldReturnDown() { - givenTemplateExecutionWillInvokeCallback(); - given(this.channel.getConnection()).willThrow(new RuntimeException()); - Health health = new RabbitHealthIndicator(this.rabbitTemplate).health(); - assertThat(health.getStatus()).isEqualTo(Status.DOWN); - } - @Test void healthWhenVersionIsMissingShouldReturnUpWithUnknownVersion() { givenTemplateExecutionWillInvokeCallback(); @@ -86,6 +78,14 @@ class RabbitHealthIndicatorTests { assertThat(health.getDetails()).containsEntry("version", "unknown"); } + @Test + void healthWhenConnectionFailsShouldReturnDown() { + givenTemplateExecutionWillInvokeCallback(); + given(this.channel.getConnection()).willThrow(new RuntimeException()); + Health health = new RabbitHealthIndicator(this.rabbitTemplate).health(); + assertThat(health.getStatus()).isEqualTo(Status.DOWN); + } + private void givenTemplateExecutionWillInvokeCallback() { given(this.rabbitTemplate.execute(any())).willAnswer((invocation) -> { ChannelCallback callback = invocation.getArgument(0);