Skip to content

v1.29.1

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Jul 18:10

Hotfix к v1.29.0 (process-режим песочницы). Изменён только orphan-guard воркера; контракты хелперов, стратегия, схема SQLite и BUILDER_VERSION (14) не тронуты — пересборка индексов не требуется.

Исправлено

  • Worker-процесс сессии больше не гибнет при завершении треда, вызвавшего rlm_start (Linux). Было так: orphan-guard воркера ставил PR_SET_PDEATHSIG=SIGKILL, но на Linux этот сигнал привязан к ТРЕДУ, породившему процесс, а не к процессу-родителю. Когда rlm_start выполнялся на короткоживущем треде (например, из пула тредов сервера), воркер получал SIGKILL при завершении/ретайре этого треда — хотя MCP-сервер жив, — и следующий rlm_execute в той же сессии падал с SandboxCrashedError (BrokenPipeError). Починили без ослабления hard orphan-guard: на Linux все multiprocessing.Process.start() песочницы проходят через долгоживущий spawn-broker thread процесса сервера, поэтому PDEATHSIG привязан к стабильному thread, переживает ретайр AnyIO-thread и по-прежнему kernel-level убивает worker при смерти сервера — в том числе когда пользовательский native-код удерживает GIL. Ожидание broker-а ограничено общим startup deadline: зависший broker выводится из ротации, новые сессии обслуживает новый, а возможный поздний spawn остаётся во владении старого broker-а и принудительно очищается. Ожидаемый PID сервера передаётся worker до spawn и закрывает стартовую гонку с init/subreaper. На macOS и прочем best-effort POSIX используется getppid-watchdog; Windows Job Object не менялся. Основной путь остановки (kill-tree родителем на rlm_end/TTL/timeout/shutdown) также не менялся.

Полный список изменений: CHANGELOG.md