From 541c3901ceef75fe12af83011b8b8eec25649a2b Mon Sep 17 00:00:00 2001 From: "shalk(xiao kun)" Date: Fri, 25 Jul 2025 20:00:31 +0800 Subject: [PATCH] fix: readiness http response code 500 when not health --- .../controller/v3/ConsoleHealthController.java | 11 +++++++++-- .../v3/ConsoleHealthControllerTest.java | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/console/src/main/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthController.java b/console/src/main/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthController.java index a1c580b8979..18ad2a57c24 100644 --- a/console/src/main/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthController.java +++ b/console/src/main/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthController.java @@ -23,6 +23,8 @@ import com.alibaba.nacos.console.paramcheck.ConsoleDefaultHttpParamExtractor; import com.alibaba.nacos.console.proxy.HealthProxy; import com.alibaba.nacos.core.paramcheck.ExtractorManager; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -62,8 +64,13 @@ public Result liveness() { * ready. */ @GetMapping("/readiness") - public Result readiness() throws NacosException { - return healthProxy.checkReadiness(); + public ResponseEntity> readiness() throws NacosException { + Result ret = healthProxy.checkReadiness(); + if (ret.getCode() == 0) { + return ResponseEntity.ok().body(ret); + } else { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ret); + } } } diff --git a/console/src/test/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthControllerTest.java b/console/src/test/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthControllerTest.java index 9a4adb9f9c9..3ccc82d6e36 100644 --- a/console/src/test/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthControllerTest.java +++ b/console/src/test/java/com/alibaba/nacos/console/controller/v3/ConsoleHealthControllerTest.java @@ -83,6 +83,24 @@ void testReadiness() throws Exception { }); assertEquals("ready", result.getData()); + assertEquals(200, response.getStatus()); + } + + @Test + void testReadinessFail() throws Exception { + when(healthProxy.checkReadiness()).thenReturn(Result.failure("fail")); + + MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/v3/console/health/readiness"); + + MockHttpServletResponse response = mockMvc.perform(builder).andReturn().getResponse(); + String actualValue = response.getContentAsString(); + + Result result = new ObjectMapper().readValue(actualValue, new TypeReference>() { + }); + + assertEquals("fail", result.getMessage()); + assertEquals(500, response.getStatus()); + } }