Tweaks to make cancellation happen correctly on ringbuf receiver & fix test log msg
parent
b2f6c298f5
commit
e4868ded54
|
@ -92,7 +92,7 @@ async def child_write_shm(
|
||||||
await sender.send(msg)
|
await sender.send(msg)
|
||||||
|
|
||||||
if rng.msgs_generated % rng.recommended_log_interval == 0:
|
if rng.msgs_generated % rng.recommended_log_interval == 0:
|
||||||
print(f'wrote {rng.total_msgs} msgs')
|
print(f'wrote {rng.msgs_generated} msgs')
|
||||||
|
|
||||||
print('writer exit')
|
print('writer exit')
|
||||||
return rng.hexdigest
|
return rng.hexdigest
|
||||||
|
|
|
@ -533,7 +533,7 @@ class RingBufferReceiveChannel(trio.abc.ReceiveChannel[bytes]):
|
||||||
self._write_ptr += delta
|
self._write_ptr += delta
|
||||||
# yield lock and re-enter
|
# yield lock and re-enter
|
||||||
|
|
||||||
except EFDReadCancelled:
|
except (EFDReadCancelled, trio.Cancelled):
|
||||||
# while waiting for new data `self._write_event` was closed
|
# while waiting for new data `self._write_event` was closed
|
||||||
try:
|
try:
|
||||||
# if eof was signaled receive no wait will not raise
|
# if eof was signaled receive no wait will not raise
|
||||||
|
@ -654,7 +654,7 @@ async def attach_to_ringbuf_receiver(
|
||||||
Launches `receiver._eof_monitor_task` in a `trio.Nursery`.
|
Launches `receiver._eof_monitor_task` in a `trio.Nursery`.
|
||||||
'''
|
'''
|
||||||
async with (
|
async with (
|
||||||
trio.open_nursery() as n,
|
trio.open_nursery(strict_exception_groups=False) as n,
|
||||||
RingBufferReceiveChannel(
|
RingBufferReceiveChannel(
|
||||||
token,
|
token,
|
||||||
cleanup=cleanup
|
cleanup=cleanup
|
||||||
|
|
Loading…
Reference in New Issue