Skip to content

[BUG][OPT-02] MCP 刷新应避免先删后查及单服务缺失中断整轮 #37

Open

Description

@Aias00

总览:#30

代码依据

问题与目标

刷新当前先 removeServer,再 getService,最后 addServer;查询异常或新增失败时,旧记录可能已经被删除。getService 返回 null 时使用 return,导致后续服务本轮不再处理。remove/add 的 boolean 返回值未核查,存在失败仍记录刷新成功的路径。尚未运行复现测试。

范围与方案

先查询并验证新记录,再使用受控替换/upsert。区分发现失败、明确下线与暂时未知,定义旧快照保留和失效策略;单服务失败不阻断其他服务。与 OPT-01 的精确索引设计协调,但复现及循环中断修复可先推进。

验收

  • 查询抛异常时不先删除旧有效记录;新增/替换失败不会虚报成功。
  • 首个服务缺失或异常时,后续服务仍被处理。
  • 明确下线按约定删除,未知/失败不会被误判为下线;若发现接口无法区分,补充明确结果契约。
  • 覆盖刷新期间查询、替换失败、单服务异常和成功更新的行为测试。
  • 重用现有 Spring init/destroy 装配,避免为局部修复引入大规模生命周期重写。

不等待整体架构重写,不扩展 MCP 协议能力。

变更约束

本单来自静态代码审查,尚未运行复现或性能测试。实施先补充针对性验证;破坏性变更需比较更小/兼容方案,记录收益、消费者影响、迁移成本和版本策略。允许保留有充分理由的现有设计。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions