mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 11:48:13 +01:00
Silently drain write queue when write error happens during recording
This commit is contained in:
@@ -36,8 +36,11 @@ 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
|
raise e
|
||||||
|
except IOError as e:
|
||||||
|
self.on_error("Write error, recording suspended")
|
||||||
|
raise e
|
||||||
|
|
||||||
|
|
||||||
def noop(_: Any) -> None:
|
def noop(_: Any) -> None:
|
||||||
|
|||||||
@@ -132,16 +132,20 @@ class async_writer(async_worker):
|
|||||||
self.enqueue([ts, "o", data])
|
self.enqueue([ts, "o", data])
|
||||||
|
|
||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
with self.writer as w:
|
try:
|
||||||
event: Tuple[float, str, Any]
|
with self.writer as w:
|
||||||
for event in iter(self.queue.get, None):
|
event: Tuple[float, str, Any]
|
||||||
assert event is not None
|
for event in iter(self.queue.get, None):
|
||||||
ts, etype, data = event
|
assert event is not None
|
||||||
|
ts, etype, data = event
|
||||||
|
|
||||||
if etype == "o":
|
if etype == "o":
|
||||||
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