refactor: harden codex stderr drain
This commit is contained in:
@@ -41,6 +41,15 @@ def extract_session_id(text: str | None) -> str | None:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def _drain_stderr(stderr, lines: list[str]) -> None:
|
||||||
|
try:
|
||||||
|
for line in stderr:
|
||||||
|
logger.info("[codex][stderr] %s", line.rstrip())
|
||||||
|
lines.append(line)
|
||||||
|
except Exception as e:
|
||||||
|
logger.debug("[codex][stderr] drain error: %s", e)
|
||||||
|
|
||||||
|
|
||||||
def setup_logging(log_file: str | None) -> None:
|
def setup_logging(log_file: str | None) -> None:
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.DEBUG)
|
||||||
logger.handlers.clear()
|
logger.handlers.clear()
|
||||||
@@ -250,13 +259,7 @@ class CodexExecRunner:
|
|||||||
proc.stdin.close()
|
proc.stdin.close()
|
||||||
|
|
||||||
stderr_lines: list[str] = []
|
stderr_lines: list[str] = []
|
||||||
|
t = threading.Thread(target=_drain_stderr, args=(proc.stderr, stderr_lines), daemon=True)
|
||||||
def _drain_stderr() -> None:
|
|
||||||
for line in proc.stderr:
|
|
||||||
logger.info("[codex][stderr] %s", line.rstrip())
|
|
||||||
stderr_lines.append(line)
|
|
||||||
|
|
||||||
t = threading.Thread(target=_drain_stderr, daemon=True)
|
|
||||||
t.start()
|
t.start()
|
||||||
|
|
||||||
found_session: str | None = session_id
|
found_session: str | None = session_id
|
||||||
|
|||||||
Reference in New Issue
Block a user