Created by: ykmn
Summary
- Диагностика по прод-логу
emg-logger4(2026-08-27): веб-интерфейс был недоступен ~2м19с после старта процесса. Причина —AudioEngineManager.StartAsyncсинхронно, по одному, запускал всеauto_start-каналы под общей блокировкой, а Kestrel не начинает слушать HTTP, пока не завершатся все hosted-сервисы; один канал с большим хвостом просроченных файлов вretention_daysмог задержать всё на минуты, так какAudioWriter.Start()чистил их синхронно. -
AudioEngineManager.StartAsyncтеперь запускает все каналы в фоне и возвращается немедленно — Kestrel стартует сразу, каналы появляются запущенными в UI постепенно (через уже существующийStatusUpdated). -
AudioEngineManager.StopAsyncдожидается (до 5с) фонового запуска перед остановкой/очисткой_engines, чтобы не потерять канал, который стартует прямо во время быстрого рестарта. -
AudioWriter.Start()больше не чиститretention_daysсинхронно — чистка ушла в фон (без гонки с текущей записью: никогда не трогает сегодняшнюю папку).
Test plan
-
dotnet build— чисто -
dotnet test— 246/246 зелёных (новый тестAudioWriterCleanupTests.Start_ManyExpiredFolders_ReturnsBeforeCleanupFinishesсначала падал на старом коде за 249мс, затем прошёл) -
Живая проверка: изолированный dotnet publish+ два тестовых канала (один с 500 просроченными папками) —Now listening onпоявился через ~280мс вместо минут, все 500 папок корректно удалены в фоне