yuluo-yx opened a new pull request, #4106: URL: https://github.com/apache/rocketmq-dashboard/pull/4106
## 变更目的 在 Broker 集群页增加按需查询的主从复制诊断。运维人员可以从现有 Broker 行查看全部登记副本的实时角色、日志偏移、主节点确认差距和传输速率,展开从节点查看上游地址及最后读写时间。 ## 实现范围 - 新增只读 `GET /api/brokers/ha?instanceId=...&brokerName=...`,复用所选 Apache 实例的运行时客户端与凭据。 - 从该实例的 NameServer 地址表选择全部副本并按 Broker ID 排序;接口不接受任意目标地址。 - 调用原生 `getBrokerHAStatus`,角色以响应为准;偏移、差距和速率使用十进制字符串保留 64 位整数精度。 - 单个节点不支持查询、超时或失败时返回节点错误和 `complete=false`,保留其他节点的诊断结果;线程中断停止后续查询。 - 增加列表入口、主从明细、手动刷新、部分结果提示及关闭/切换实例后的请求取消和过期响应隔离。 - 新增中文操作和兼容性说明,无新增依赖与持久化字段。 核对全部 Issue/PR 标题正文和在线 `HA replication` 检索后,相关 #658 是复制告警规则,没有提供原生 HA 状态查询与副本明细。协议字段和单位依据官方 [HARuntimeInfo](https://github.com/apache/rocketmq/blob/rocketmq-all-5.5.0/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/HARuntimeInfo.java) 与 [haStatus 命令](https://github.com/apache/rocketmq/blob/rocketmq-all-5.5.0/tools/src/main/java/org/apache/rocketmq/tools/command/ha/HAStatusSubCommand.java)。 ## 本地验证 基线 `d6dee7d7ccfcf4886f02466ec51452a6928b2cc8`,Java 21、Node 24.18.0,2026-09-08。 ```bash cd server mvn -B -ntp -Dtest=BrokerHaTest,RuntimeAdminClientResolverTest,ClusterControllerTest verify cd ../web npx vitest run src/api/brokerHa.test.ts src/components/__tests__/BrokerHaDialog.test.tsx src/pages/studio/__tests__/BrokerCluster.test.tsx npm run build ``` - 后端 52 个测试通过,含 9 个新增 HTTP/服务组合场景;Checkstyle、打包通过。 - 新增服务 JaCoCo 行覆盖率 43/43、分支覆盖率 20/20;新增 Controller 与响应记录类均覆盖。 - 前端 24 个测试通过;TypeScript、Vite 构建及修改文件 ESLint 通过。 - Playwright 在真实本地页面使用受控 GET 响应,验证列表入口、复制连接展开、`9007199254740993` 偏移精度与部分失败;1100px 弹窗没有自身横向溢出。测试使用 ConfigProvider 关闭 jsdom 不完成的 CSS 动画,生产动画保持正常。 - `git diff --check` 通过;10 个文件,904 行新增、1 行删除,合计 905 行。 原样上游基线已有 3 个全量后端失败(AuthCorsIntegrationTest 两项、AliyunInstanceProviderTest 一项)和依赖漏洞。本 PR 无新增依赖、相关验证无新增失败;不把增量验证称为项目级全量验收。真实集群 E2E、性能、压力、容量及混沌测试未执行。 副本依次采样,延迟受现有 RPC 超时和登记副本数影响,不是原子快照。浏览器取消不保证已经开始的 Broker RPC 立即终止。HA 服务支持由 Broker 版本与模式决定,不能依据本快照断言故障切换安全。 无迁移,直接部署;回滚该独立提交即可移除功能。提交含 `[skip ci]`,验证在本地执行。 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
