This is an automated email from the ASF dual-hosted git repository.
lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git
The following commit(s) were added to refs/heads/rocketmq-studio by this push:
new aa4aee17 fix(cluster): return errors instead of a success envelope for
failed operations (#1132)
aa4aee17 is described below
commit aa4aee1700706a025a91bf72944f93a94c834539
Author: yyqdbngt <[email protected]>
AuthorDate: Fri Aug 7 15:15:40 2026 +0800
fix(cluster): return errors instead of a success envelope for failed
operations (#1132)
Co-authored-by: yyqdbngt <[email protected]>
---
.../studio/cluster/broker/ClusterController.java | 4 +++-
.../cluster/nameserver/NameServerController.java | 23 ++++++++++++++--------
.../studio/cluster/proxy/ProxyController.java | 10 ++++++----
.../cluster/broker/ClusterControllerTest.java | 1 -
.../nameserver/NameServerControllerTest.java | 6 ++----
.../studio/cluster/proxy/ProxyControllerTest.java | 3 +--
6 files changed, 27 insertions(+), 20 deletions(-)
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/cluster/broker/ClusterController.java
b/server/src/main/java/org/apache/rocketmq/studio/cluster/broker/ClusterController.java
index 7192c6c2..7a72a7bc 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/cluster/broker/ClusterController.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/cluster/broker/ClusterController.java
@@ -66,8 +66,10 @@ public class ClusterController {
public Result<Map<String, Object>> restartBroker(@PathVariable String
clusterId,
@PathVariable String
name) {
boolean success = clusterService.restartBroker(clusterId, name);
+ if (!success) {
+ throw new BusinessException(500, "Failed to restart broker: " +
name);
+ }
return Result.ok(Map.of(
- "success", success,
"message", "Broker restart initiated for " + name
));
}
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerController.java
b/server/src/main/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerController.java
index 2b6ee2d7..0e2a8129 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerController.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerController.java
@@ -27,8 +27,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.Map;
-
@RestController
@RequestMapping("/api/nameservers")
@RequiredArgsConstructor
@@ -50,27 +48,36 @@ public class NameServerController {
}
@PostMapping("/restart")
- public Result<Map<String, Boolean>> restartNameServer(
+ public Result<Void> restartNameServer(
@Valid @RequestBody(required = false) RestartNameServerDTO
command) {
requireCommand(command);
boolean success = clusterService.restartNameServer(command);
- return Result.ok(Map.of("success", success));
+ requireOperationSuccess(success, "restart");
+ return Result.ok();
}
@PostMapping("/upgrade")
- public Result<Map<String, Boolean>> upgradeNameServer(
+ public Result<Void> upgradeNameServer(
@Valid @RequestBody(required = false) UpgradeNameServerDTO
command) {
requireCommand(command);
boolean success = clusterService.upgradeNameServer(command);
- return Result.ok(Map.of("success", success));
+ requireOperationSuccess(success, "upgrade");
+ return Result.ok();
}
@PostMapping("/delete")
- public Result<Map<String, Boolean>> deleteNameServer(
+ public Result<Void> deleteNameServer(
@Valid @RequestBody(required = false) DeleteNameServerDTO command)
{
requireCommand(command);
boolean success = clusterService.deleteNameServer(command);
- return Result.ok(Map.of("success", success));
+ requireOperationSuccess(success, "delete");
+ return Result.ok();
+ }
+
+ private void requireOperationSuccess(boolean success, String operation) {
+ if (!success) {
+ throw new BusinessException(500, "Failed to " + operation + "
NameServer");
+ }
}
private void requireCommand(Object command) {
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/cluster/proxy/ProxyController.java
b/server/src/main/java/org/apache/rocketmq/studio/cluster/proxy/ProxyController.java
index fa90b888..4c4e9646 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/cluster/proxy/ProxyController.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/cluster/proxy/ProxyController.java
@@ -18,6 +18,7 @@ package org.apache.rocketmq.studio.cluster.proxy;
import org.apache.rocketmq.studio.cluster.broker.ClusterService;
import org.apache.rocketmq.studio.common.domain.Result;
+import org.apache.rocketmq.studio.common.exception.BusinessException;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
@@ -25,8 +26,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.Map;
-
@RestController
@RequestMapping("/api/proxies")
@RequiredArgsConstructor
@@ -35,8 +34,11 @@ public class ProxyController {
private final ClusterService clusterService;
@PostMapping("/restart")
- public Result<Map<String, Boolean>> restartProxy(@Valid @RequestBody
RestartProxyDTO command) {
+ public Result<Void> restartProxy(@Valid @RequestBody RestartProxyDTO
command) {
boolean success = clusterService.restartProxy(command);
- return Result.ok(Map.of("success", success));
+ if (!success) {
+ throw new BusinessException(500, "Failed to restart proxy");
+ }
+ return Result.ok();
}
}
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/cluster/broker/ClusterControllerTest.java
b/server/src/test/java/org/apache/rocketmq/studio/cluster/broker/ClusterControllerTest.java
index b71527b5..2bd3b758 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/cluster/broker/ClusterControllerTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/cluster/broker/ClusterControllerTest.java
@@ -299,7 +299,6 @@ class ClusterControllerTest {
mockMvc.perform(post("/api/clusters/cluster-1/brokers/broker-0/restart"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.data.success").value(true))
.andExpect(jsonPath("$.data.message").value("Broker restart
initiated for broker-0"));
}
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerControllerTest.java
b/server/src/test/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerControllerTest.java
index 6f969c93..037dc891 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerControllerTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/cluster/nameserver/NameServerControllerTest.java
@@ -122,8 +122,7 @@ class NameServerControllerTest {
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.data.success").value(true));
+ .andExpect(jsonPath("$.code").value(200));
verify(clusterService).restartNameServer(any(RestartNameServerDTO.class));
}
@@ -173,8 +172,7 @@ class NameServerControllerTest {
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.data.success").value(true));
+ .andExpect(jsonPath("$.code").value(200));
verify(clusterService).deleteNameServer(any(DeleteNameServerDTO.class));
}
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/cluster/proxy/ProxyControllerTest.java
b/server/src/test/java/org/apache/rocketmq/studio/cluster/proxy/ProxyControllerTest.java
index 3f5d0d5d..faea87a4 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/cluster/proxy/ProxyControllerTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/cluster/proxy/ProxyControllerTest.java
@@ -59,8 +59,7 @@ class ProxyControllerTest {
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.data.success").value(true));
+ .andExpect(jsonPath("$.code").value(200));
verify(clusterService).restartProxy(any(RestartProxyDTO.class));
}