fix(mcp): clear stale MCP connection errors

Update MCP server status with an explicit wrapper so successful reconnects can persist lastError=null while keeping updateTime refreshed.
This commit is contained in:
DayByDay 2026-05-04 14:16:43 +08:00 committed by GitHub
parent f5d845ff31
commit 1aa7787ced
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,6 +2,7 @@ package vip.mate.tool.mcp.service;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -313,15 +314,16 @@ public class McpServerService {
private void updateStatus(Long id, String status, String error, int toolCount) {
try {
McpServerEntity update = new McpServerEntity();
update.setId(id);
update.setLastStatus(status);
update.setLastError(error);
update.setToolCount(toolCount);
LambdaUpdateWrapper<McpServerEntity> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(McpServerEntity::getId, id);
wrapper.set(McpServerEntity::getLastStatus, status);
wrapper.set(McpServerEntity::getLastError, error);
wrapper.set(McpServerEntity::getToolCount, toolCount);
if ("connected".equals(status)) {
update.setLastConnectedTime(LocalDateTime.now());
wrapper.set(McpServerEntity::getLastConnectedTime, LocalDateTime.now());
}
mcpServerMapper.updateById(update);
wrapper.set(McpServerEntity::getUpdateTime, LocalDateTime.now());
mcpServerMapper.update(null, wrapper);
} catch (Exception e) {
log.warn("Failed to update MCP server status: {}", e.getMessage());
}