Silently drain write queue when write error happens during recording

This commit is contained in:
Marcin Kulik
2023-04-15 17:22:25 +02:00
parent 297e8913a2
commit ac8f7edb51
2 changed files with 17 additions and 10 deletions

View File

@@ -36,7 +36,10 @@ class file_writer:
self.on_error("Output pipe reopened successfully")
self.file.write(data) # type: ignore
else:
self.on_error("Output pipe broken")
self.on_error("Output pipe broken, recording suspended")
raise e
except IOError as e:
self.on_error("Write error, recording suspended")
raise e

View File

@@ -132,6 +132,7 @@ class async_writer(async_worker):
self.enqueue([ts, "o", data])
def run(self) -> None:
try:
with self.writer as w:
event: Tuple[float, str, Any]
for event in iter(self.queue.get, None):
@@ -142,6 +143,9 @@ class async_writer(async_worker):
w.write_stdout(self.time_offset + ts, data)
elif etype == "i":
w.write_stdin(self.time_offset + ts, data)
except IOError:
for event in iter(self.queue.get, None):
pass
class async_notifier(async_worker):