Toss in some breakpointed collapsers to catch eg

Such that when that strange (now marked xfail) case from 6348c83 shows
we can attempt to REPL it.

Thus far this has led to zero insight as to why the fail-after is not
raising a `TooSlowError` and instead the eg with embedded assert-error,
but likely mucking with the `trio.NurseryManager.__aexit__()` (prolly by
overriding it unfortunately..) will get us somewhere??
POST_final_eg_refinements_failafter_investigation
Tyler Goodlet 2025-08-10 14:56:09 -04:00
parent 5fc64107e5
commit e50ba3e8a6
1 changed files with 38 additions and 10 deletions

View File

@ -468,7 +468,11 @@ async def _open_and_supervise_one_cancels_all_nursery(
# errors from this daemon actor nursery bubble up to caller
async with (
collapse_eg(),
# collapse_eg(),
collapse_eg(
bp=True,
hide_tb=False,
),
trio.open_nursery() as da_nursery,
):
try:
@ -481,7 +485,11 @@ async def _open_and_supervise_one_cancels_all_nursery(
# As such if the strategy propagates any error(s) upwards
# the above "daemon actor" nursery will be notified.
async with (
collapse_eg(),
# collapse_eg(),
collapse_eg(
bp=True,
hide_tb=False,
),
trio.open_nursery() as ria_nursery,
):
an = ActorNursery(
@ -621,11 +629,17 @@ async def _open_and_supervise_one_cancels_all_nursery(
# use `BaseExceptionGroup` as needed
if len(errors) > 1:
raise BaseExceptionGroup(
beg = BaseExceptionGroup(
'tractor.ActorNursery errored with',
tuple(errors.values()),
)
beg.add_note(
'This beg was created from an actor-nursery!\n'
)
await debug.pause(shield=True)
raise beg
else:
# await debug.pause(shield=True)
raise list(errors.values())[0]
# show frame on any (likely) internal error
@ -683,16 +697,30 @@ async def open_nursery(
# mark us for teardown on exit
implicit_runtime: bool = True
async with open_root_actor(
hide_tb=hide_tb,
**kwargs,
) as actor:
async with (
# collapse_eg(),
collapse_eg(
bp=True,
hide_tb=False,
),
open_root_actor(
hide_tb=hide_tb,
**kwargs,
) as actor
):
assert actor is current_actor()
try:
async with _open_and_supervise_one_cancels_all_nursery(
actor
) as an:
async with (
# collapse_eg(),
collapse_eg(
bp=True,
hide_tb=False,
),
_open_and_supervise_one_cancels_all_nursery(
actor
) as an,
):
# NOTE: mark this nursery as having
# implicitly started the root actor so