fix: 卸载Agent后清除Redis心跳(之前只清MySQL导致在线状态残留)

卸载Agent后只更新MySQL is_online=False,但前端读Redis覆盖为True。
修复: uninstall_agent_remote + batch_uninstall_agent 都增加redis.delete(heartbeat:{id})

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Your Name
2026-05-29 23:57:06 +08:00
parent 6dd0b487b7
commit ac66f5b4e7
+12 -1
View File
@@ -824,6 +824,12 @@ async def batch_uninstall_agent(
ok = r["exit_code"] == 0
if ok:
# Clear Redis heartbeat (real-time source) + MySQL
try:
redis = get_redis()
await redis.delete(f"{REDIS_KEY_PREFIX}{sid}")
except Exception:
pass
server.is_online = False
server.agent_version = None
await db.commit()
@@ -1250,7 +1256,12 @@ async def uninstall_agent_remote(
detail=f"卸载失败: {_install_error_msg(result.get('stdout', ''), result.get('stderr', ''), result['exit_code'])}",
)
# Clear agent metadata in database
# Clear agent metadata: Redis (real-time source) + MySQL (history)
try:
redis = get_redis()
await redis.delete(f"{REDIS_KEY_PREFIX}{id}")
except Exception:
logger.warning(f"Failed to clear Redis heartbeat for server {id}", exc_info=True)
server.is_online = False
server.agent_version = None
await db.commit()