This commit is contained in:
2026-01-31 19:00:04 -08:00
parent dcf16e0cc4
commit 6513a3ad04
25 changed files with 617 additions and 397 deletions

View File

@@ -9,6 +9,7 @@ from typing import Any, Dict, Optional, Set, TextIO, Sequence
from SYS.config import get_local_storage_path
from SYS.worker_manager import WorkerManager
from SYS.logger import log
class WorkerOutputMirror(io.TextIOBase):
@@ -69,7 +70,8 @@ class WorkerOutputMirror(io.TextIOBase):
try:
self._manager.append_stdout(self._worker_id, text, channel=self._channel)
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to append stdout for worker '%s' channel '%s'", self._worker_id, self._channel)
@property
def encoding(self) -> str: # type: ignore[override]
@@ -112,7 +114,8 @@ class WorkerStageSession:
self.stdout_proxy.flush()
self.stderr_proxy.flush()
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to flush worker stdout/stderr proxies for '%s'", self.worker_id)
sys.stdout = self.orig_stdout
sys.stderr = self.orig_stderr
@@ -121,7 +124,8 @@ class WorkerStageSession:
try:
self.manager.disable_logging_for_worker(self.worker_id)
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to disable logging for worker '%s'", self.worker_id)
try:
if status == "completed":
@@ -131,14 +135,16 @@ class WorkerStageSession:
self.worker_id, f"{self._error_label}: {error_msg or status}"
)
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to log step for worker '%s' status='%s' error='%s'", self.worker_id, status, error_msg)
try:
self.manager.finish_worker(
self.worker_id, result=status or "completed", error_msg=error_msg or ""
)
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to finish worker '%s' with status '%s'", self.worker_id, status)
if self.config and self.config.get("_current_worker_id") == self.worker_id:
self.config.pop("_current_worker_id", None)
@@ -177,7 +183,8 @@ class WorkerManagerRegistry:
try:
cls._manager.close()
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to close existing WorkerManager during registry ensure")
cls._manager = WorkerManager(resolved_root, auto_refresh_interval=0.5)
cls._manager_root = resolved_root
@@ -192,7 +199,8 @@ class WorkerManagerRegistry:
reason="CLI session ended unexpectedly; marking worker as failed",
)
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to expire running workers during registry ensure")
else:
cls._orphan_cleanup_done = True
@@ -202,7 +210,7 @@ class WorkerManagerRegistry:
return manager
except Exception as exc:
print(f"[worker] Could not initialize worker manager: {exc}", file=sys.stderr)
log(f"[worker] Could not initialize worker manager: {exc}", file=sys.stderr)
return None
@classmethod
@@ -212,7 +220,8 @@ class WorkerManagerRegistry:
try:
cls._manager.close()
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to close WorkerManager during registry.close()")
cls._manager = None
cls._manager_root = None
cls._orphan_cleanup_done = False
@@ -254,7 +263,7 @@ class WorkerStages:
if not tracked:
return None
except Exception as exc:
print(f"[worker] Failed to track {worker_type}: {exc}", file=sys.stderr)
log(f"[worker] Failed to track {worker_type}: {exc}", file=sys.stderr)
return None
if session_worker_ids is not None:
@@ -279,7 +288,8 @@ class WorkerStages:
try:
worker_manager.log_step(worker_id, f"Started {worker_type}")
except Exception:
pass
from SYS.logger import logger
logger.exception("Failed to log start step for worker '%s'", worker_id)
return WorkerStageSession(
manager=worker_manager,