Skip to content

Stability: AudioRecorder не имеет crash recovery в отличие от FFmpegVideoWriter #97

Description

@chelslava

Описание

FFmpegVideoWriter имеет полноценный crash recovery: retry_with_backoff(), _attempt_recovery() с созданием _partN сегментов, _check_disk_space() для graceful stop. AudioRecorder — не имеет ничего из этого.

Проблема

  • recorder/audio_recorder.py (строки 270-277) — потоки _writer_thread и _record_thread запускаются как daemon=False, без механизма восстановления. Если sounddevice поток умирает (ошибка драйвера, переключение устройства), аудио-чанки молча теряются.
  • recorder/audio_recorder.py (строки 473-478) — исключения при pyaudio cleanup подавляются через except Exception: pass
  • recorder/audio_recorder.py (строки 486-527) — EventBus.publish() вызывается без блокировки, race condition на self._event_bus
  • recorder/audio_recorder.py — нет _attempt_recovery(), нет retry-логики

Критерии приёмки (DOR)

  • AudioRecorder перехватывает ошибки sounddevice и пытается переоткрыть поток (max 3 попытки, backoff)
  • При невосстановимой ошибке — логирует и публикует RecordingEvent с типом ошибки
  • UI получает уведомление о потере аудио (не тихо продолжает запись без звука)
  • Подавленные исключения except Exception: pass заменены на logger.warning
  • _enqueue_audio_chunk() защищён блокировкой при доступе к self._event_bus

Локация

  • recorder/audio_recorder.py (строки 234-241, 270-277, 473-478, 486-527)

Оценка

3-4 часа

Приоритет

High — потеря аудио без уведомления пользователя — критическая проблема надежности.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions