Created by: ykmn
Проблема
Старые записи не удалялись автоматически, а уменьшение retention_days не освобождало место.
Причины
-
CleanupOldFilesвызывалась только при старте канала и изMaybeRotateпри смене даты, аMaybeRotateработает лишь при открытом файле. У каналов с детектором тишины и при падении ffmpeg из-за «No space left on device» чистка не срабатывала, и диск не освобождался. -
ChannelEngine.UpdateConfigне передавал новыйRetentionDaysработающемуAudioWriter.
Изменения
-
AudioWriter: собственный таймер чистки, сразу при старте и далее раз в час. Вызов изMaybeRotateубран. - Добавлен
AudioWriter.UpdateRetention. Он вызывается изChannelEngine.UpdateConfigи сразу запускает чистку. - Защита от наложения проходов и логирование необработанных исключений. Смена срока во время идущего прохода не теряется.
- INFO-итог прохода: файлы, папки, ГБ.
- Версия 1.00.066, обновлены
CHANGELOG,HISTORY,DETAILS.
Проверка
-
dotnet test: 256 тестов зелёные, включая новыйUpdateRetention_ShortenedOnRunningWriter_DeletesNewlyExpiredFolders. - На боевом сервере не проверялось.