From 2483398b0f0eac6f018ffe748700b25631e311c4 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Mon, 11 May 2020 23:20:03 +0200 Subject: [PATCH] clean up .wav files on exception, refs #107 --- owrx/audio.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/owrx/audio.py b/owrx/audio.py index aa8b5c0..a8c2880 100644 --- a/owrx/audio.py +++ b/owrx/audio.py @@ -25,6 +25,12 @@ class QueueJob(object): def run(self): self.decoder.decode(self) + def unlink(self): + try: + os.unlink(self.file) + except FileNotFoundError: + pass + class QueueWorker(threading.Thread): def __init__(self, queue): @@ -40,6 +46,9 @@ class QueueWorker(threading.Thread): except Exception: logger.exception("failed to decode job") self.queue.onError() + finally: + job.unlink() + self.queue.task_done() @@ -159,11 +168,12 @@ class AudioWriter(object): self.switchingLock.release() file.close() + job = QueueJob(self, filename, self.dsp.get_operating_freq()) try: - DecoderQueue.getSharedInstance().put(QueueJob(self, filename, self.dsp.get_operating_freq())) + DecoderQueue.getSharedInstance().put(job) except Full: logger.warning("decoding queue overflow; dropping one file") - os.unlink(filename) + job.unlink() self._scheduleNextSwitch() def decode(self, job: QueueJob): @@ -183,7 +193,6 @@ class AudioWriter(object): except subprocess.TimeoutExpired: logger.warning("subprocess (pid=%i}) did not terminate correctly; sending kill signal.", decoder.pid) decoder.kill() - os.unlink(job.file) def start(self): (self.wavefilename, self.wavefile) = self.getWaveFile()