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:
+12
-1
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user