auto-sync: 2026-05-26 08:25:59
This commit is contained in:
@@ -20,6 +20,7 @@ from typing import Any, Callable, Coroutine, Dict, List, Optional
|
||||
from src.blackboard.operations import Blackboard
|
||||
from src.blackboard.db import get_connection
|
||||
from src.blackboard.models import Task
|
||||
from src.daemon.spawner import AgentBusyError
|
||||
from src.blackboard.queries import Queries
|
||||
from src.blackboard.registry import ProjectRegistry
|
||||
|
||||
@@ -864,6 +865,18 @@ class Ticker:
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
# v2.7.2: 进程存活性检查 — counter 占用但进程已死的光底
|
||||
if self.spawner and self.counter:
|
||||
for agent_id in list(self.counter.active_agents.keys()):
|
||||
session_info = self.spawner.get_session_by_agent(agent_id)
|
||||
if not session_info:
|
||||
continue
|
||||
pid = session_info.get("pid")
|
||||
if pid and not self._is_pid_alive(pid):
|
||||
logger.warning("Agent %s process dead (pid=%d), releasing counter",
|
||||
agent_id, pid)
|
||||
self.counter.release(agent_id)
|
||||
|
||||
return reclaimed
|
||||
|
||||
def _mail_check_reply(self, original_task_id: str, db_path: Path) -> bool:
|
||||
|
||||
Reference in New Issue
Block a user