mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 19:58:03 +01:00
Silently drain write queue when write error happens during recording
This commit is contained in:
@@ -36,7 +36,10 @@ class file_writer:
|
|||||||
self.on_error("Output pipe reopened successfully")
|
self.on_error("Output pipe reopened successfully")
|
||||||
self.file.write(data) # type: ignore
|
self.file.write(data) # type: ignore
|
||||||
else:
|
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
|
raise e
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ class async_writer(async_worker):
|
|||||||
self.enqueue([ts, "o", data])
|
self.enqueue([ts, "o", data])
|
||||||
|
|
||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
|
try:
|
||||||
with self.writer as w:
|
with self.writer as w:
|
||||||
event: Tuple[float, str, Any]
|
event: Tuple[float, str, Any]
|
||||||
for event in iter(self.queue.get, None):
|
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)
|
w.write_stdout(self.time_offset + ts, data)
|
||||||
elif etype == "i":
|
elif etype == "i":
|
||||||
w.write_stdin(self.time_offset + ts, data)
|
w.write_stdin(self.time_offset + ts, data)
|
||||||
|
except IOError:
|
||||||
|
for event in iter(self.queue.get, None):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class async_notifier(async_worker):
|
class async_notifier(async_worker):
|
||||||
|
|||||||
Reference in New Issue
Block a user