Skip to content

Ограничить завершение Git-процессов после timeout на Windows - #27

Open
APonkratov wants to merge 3 commits into
Dach-Coin:masterfrom
APonkratov:codex/fix-windows-git-timeout-tree
Open

Ограничить завершение Git-процессов после timeout на Windows#27
APonkratov wants to merge 3 commits into
Dach-Coin:masterfrom
APonkratov:codex/fix-windows-git-timeout-tree

Conversation

@APonkratov

Copy link
Copy Markdown

Что изменено

  • Добавлен единый внутренний runner run_git(args, timeout) на базе Popen с DEVNULL для stdin и UTF-8/errors="replace" для stdout/stderr.
  • На Windows timeout завершает дерево процессов через системный taskkill.exe /T /F с отдельным лимитом; затем применяется fallback к непосредственному процессу, а drain pipe и ожидание тоже ограничены.
  • Все восемь Git-вызовов в bsl_index.py переведены на общий runner без изменения существующей семантики fallback.
  • Добавлена Windows-регрессия с реальным дочерним процессом, наследующим capture pipe, а также тест отказа taskkill.
  • Версия поднята до 1.32.2; обновлены changelog, карта модулей и uv.lock. BUILDER_VERSION остаётся 14 — пересборка индекса не требуется.

Почему

Git for Windows запускает дочерний mingw64\bin\git.exe из Git\cmd\git.exe. Прежний subprocess.run(..., capture_output=True, timeout=...) при timeout завершал только непосредственный процесс, после чего мог бессрочно ждать закрытия stdout/stderr: дочерний Git сохранял pipe-хэндлы открытыми. Из-за этого rlm_start, обновление индекса или git_search могли не вернуть управление уже после истечения лимита.

Closes #26

Тип изменения

  • Баг-фикс
  • Новая функциональность
  • Рефакторинг (без изменения поведения)
  • Документация
  • CI / инфраструктура

Чеклист

  • Тесты проходят (uv run pytest tests/ -q: 2567 passed, 5 skipped, 1 xfailed)
  • Линтер проходит (uv run ruff check .)
  • Lock-файл актуален (uv lock --check)
  • Обновлён CHANGELOG.md
  • Документация актуализирована

@APonkratov
APonkratov marked this pull request as ready for review August 12, 2026 16:38
@APonkratov
APonkratov requested a review from Dach-Coin as a code owner August 12, 2026 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Git-команды могут навсегда зависнуть после timeout на Windows

1 participant