stop_is_oec: expect trio.EndOfChannel as graceful stream shutdown #37

Closed
goodboy wants to merge 0 commits from stop_is_oec into main

This should likely be synced with tractor’s new typed-IPC-msging either via dev branch or (ideally) a release!


Change .data._sampling broadcast error handling to include trio.EndOfChannel in the Sampler.bcast_errors: set since a tractor.MsgStream termination msg (Stop) now instead translates to that raised in task.

The main purpose here is to avoid crashing the sampler broadcast task in such graceful peer-disconnect conditions.

This should likely be synced with `tractor`'s new [typed-IPC-msging](https://pikers.dev/goodboy/tractor/pulls/7) either via dev branch or (ideally) a release! --- Change `.data._sampling` broadcast error handling to include `trio.EndOfChannel` in the `Sampler.bcast_errors: set` since a `tractor.MsgStream` termination msg (`Stop`) now instead translates to that raised in task. The main purpose here is to avoid crashing the sampler broadcast task in such graceful peer-disconnect conditions.
goodboy added 3 commits 2025-02-20 16:32:25 +00:00
6e495511ff Suppress `trio.EndOfChannel`s raised by remote peer
Since now `tractor` will raise this native `trio`-exc translated from
a `Stop` msg when the peer gracefully terminates a `tractor.MsgStream`.
Just `info()` log in such cases versus continuing to warn for the
others.
a795108041 Group bcast errors as `Sampler.bcast_errors`
A new class var `tuple[Exception]` such that the err set can be reffed
externally as needed for catching other similar pub-sub/IPC failures in
other (related) real-time sub-systems.

Also added some now-masked logging for debugging live-feed stream reading
issues that should ONLY be used for debugging since they'll greatly
degrade HFT perf. Used the new `log.mk_repr()` stuff (that one day we
should prolly pull from `modden` as a dep) for pretty console emissions.
389c746223 Catch using `Sampler.bcast_errors` where possible
In all other possible IPC disconnect handling blocks. Also more
comprehensive typing throughout `uniform_rate_send()`.
goodboy force-pushed stop_is_oec from 389c746223 to 49841f5b91 2025-02-21 21:25:07 +00:00 Compare
goodboy changed title from stop_is_oec: expect `trio.EndOfChannel` as grace stream shutdown to stop_is_oec: expect `trio.EndOfChannel` as graceful stream shutdown 2025-02-21 22:12:33 +00:00
Poster
Owner

The commit 3ff0a8674 from the branch decimal_prices_thru_ems should be cherried to this as well

The commit 3ff0a8674 from the branch `decimal_prices_thru_ems` should be cherried to this as well
goodboy changed title from stop_is_oec: expect `trio.EndOfChannel` as graceful stream shutdown to stop_is_oec: expect `trio.EndOfChannel` as graceful stream shutdown 2025-12-31 08:16:37 +00:00
goodboy changed target branch from jsonrpc_err_in_rent to main 2025-12-31 08:16:37 +00:00
Poster
Owner

Ok i think the list of non-conflicting cherries and/or TO-DROPs is,

hopefully that’s about right as it’s the change-set on .data/_sampling i see on my workin branch.

i think a rebase of gitea/decimal_prices_thru_ems onto this branch should clarify?

Ok i think the list of non-conflicting cherries and/or TO-DROPs is, - 3ff0a86741836b61c32f0fd0be1b2b227040ef00 - 94caa248e7 hopefully that's about right as it's the change-set on `.data/_sampling` i see on my workin branch. i think a rebase of `gitea/decimal_prices_thru_ems` onto this branch should clarify?
Poster
Owner

Ok i’ve rebased various downstream branches onto this, going to close in favor of #52 which has the typo in the branch name corrected Bp

eoc = end-of-channel, i.e. trio.EndOfChannel, where “stop is eoc” signifies that stream stopping can be signalled by an eoc as well.

Ok i've rebased various downstream branches onto this, going to close in favor of #52 which has the typo in the branch name corrected Bp eoc = end-of-channel, i.e. `trio.EndOfChannel`, where "stop is eoc" signifies that stream stopping can be signalled by an eoc **as well**.
goodboy closed this pull request 2026-01-01 19:43:16 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: pikers/piker#37
There is no content yet.