From ac6ab3791e7464cd735b1d00564af5bbfd1f78de Mon Sep 17 00:00:00 2001 From: goodboy Date: Wed, 4 Feb 2026 20:02:28 -0500 Subject: [PATCH] Handle `tractor.TransportClosed` as "stream-closed" In both the ems and sampler since on new `tractor` this is the "wrapping" exception raised when the transport layer terminates early but in a psuedo-"graceful" way, expected when a peer actors disconnect. Previously we were crashing in this case since old `tractor` just raised the underlying `trio`-source-exceptions verbatim. Also, - use `Aid.reprol()` in log msgs vs old `.chan.uid` refs (this commit msg was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-code --- piker/clearing/_ems.py | 3 ++- piker/data/_sampling.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/piker/clearing/_ems.py b/piker/clearing/_ems.py index 96c01df8..a5939eb7 100644 --- a/piker/clearing/_ems.py +++ b/piker/clearing/_ems.py @@ -729,6 +729,7 @@ class Router(Struct): except ( trio.ClosedResourceError, trio.BrokenResourceError, + tractor.TransportClosed, ): to_remove.add(client_stream) log.warning( @@ -1699,5 +1700,5 @@ async def _emsd_main( if not client_streams: log.warning( f'Order dialog is not being monitored:\n' - f'{oid} ->\n{client_stream._ctx.chan.uid}' + f'{oid!r} <-> {client_stream.chan.aid.reprol()}\n' ) diff --git a/piker/data/_sampling.py b/piker/data/_sampling.py index 609218ad..c81f79eb 100644 --- a/piker/data/_sampling.py +++ b/piker/data/_sampling.py @@ -99,6 +99,7 @@ class Sampler: trio.BrokenResourceError, trio.ClosedResourceError, trio.EndOfChannel, + tractor.TransportClosed, ) # holds all the ``tractor.Context`` remote subscriptions for @@ -753,7 +754,7 @@ async def sample_and_broadcast( log.warning( f'Feed OVERRUN {sub_key}' f'@{bus.brokername} -> \n' - f'feed @ {chan.uid}\n' + f'feed @ {chan.aid.reprol()}\n' f'throttle = {throttle} Hz' )