From 47a2a99a1ff9a785582fb880b90bfff8ab453ce2 Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Sun, 20 Nov 2022 22:21:24 -0500 Subject: [PATCH] Trying to avoid other problems due to non-existant initial file. --- owrx/audio/wav.py | 49 ++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/owrx/audio/wav.py b/owrx/audio/wav.py index d3ec2ba..1fc7c2b 100644 --- a/owrx/audio/wav.py +++ b/owrx/audio/wav.py @@ -85,36 +85,37 @@ class AudioWriter(object): file = self.wavefile self.wavefile = self.getWaveFile() + # if previously open file exists... if file is not None: file.close() - tmp_dir = CoreConfig().get_temporary_directory() + tmp_dir = CoreConfig().get_temporary_directory() + + for profile in self.profiles: + # create hardlinks for the individual profiles + filename = "{tmp_dir}/openwebrx-audiochopper-{pid}-{timestamp}.wav".format( + tmp_dir=tmp_dir, + pid=id(profile), + timestamp=file.getTimestamp().strftime(profile.getFileTimestampFormat()), + ) + try: + os.link(file.getFileName(), filename) + except OSError: + logger.exception("Error while linking job files") + continue + + job = self.chopper.createJob(profile, filename) + try: + DecoderQueue.getSharedInstance().put(job) + except Full: + logger.warning("decoding queue overflow; dropping one file") + job.unlink() - for profile in self.profiles: - # create hardlinks for the individual profiles - filename = "{tmp_dir}/openwebrx-audiochopper-{pid}-{timestamp}.wav".format( - tmp_dir=tmp_dir, - pid=id(profile), - timestamp=file.getTimestamp().strftime(profile.getFileTimestampFormat()), - ) try: - os.link(file.getFileName(), filename) + # our master can be deleted now, the profiles will delete their hardlinked copies after processing + file.unlink() except OSError: - logger.exception("Error while linking job files") - continue - - job = self.chopper.createJob(profile, filename) - try: - DecoderQueue.getSharedInstance().put(job) - except Full: - logger.warning("decoding queue overflow; dropping one file") - job.unlink() - - try: - # our master can be deleted now, the profiles will delete their hardlinked copies after processing - file.unlink() - except OSError: - logger.exception("Error while unlinking job files") + logger.exception("Error while unlinking job files") self._scheduleNextSwitch()