Compare commits
No commits in common. "d2ad58d5d6c16772ad8b33770fb46968d9359b68" and "5fc64107e566a5b59097cb1e9a6b3171f2125106" have entirely different histories.
d2ad58d5d6
...
5fc64107e5
|
@ -478,10 +478,7 @@ async def open_root_actor(
|
||||||
|
|
||||||
# start runtime in a bg sub-task, yield to caller.
|
# start runtime in a bg sub-task, yield to caller.
|
||||||
async with (
|
async with (
|
||||||
collapse_eg(
|
collapse_eg(),
|
||||||
bp=True,
|
|
||||||
hide_tb=False,
|
|
||||||
),
|
|
||||||
trio.open_nursery() as root_tn,
|
trio.open_nursery() as root_tn,
|
||||||
|
|
||||||
# XXX, finally-footgun below?
|
# XXX, finally-footgun below?
|
||||||
|
@ -526,12 +523,6 @@ async def open_root_actor(
|
||||||
err,
|
err,
|
||||||
api_frame=inspect.currentframe(),
|
api_frame=inspect.currentframe(),
|
||||||
debug_filter=debug_filter,
|
debug_filter=debug_filter,
|
||||||
|
|
||||||
# XXX NOTE, required to debug root-actor
|
|
||||||
# crashes under cancellation conditions; so
|
|
||||||
# most of them!
|
|
||||||
shield=root_tn.cancel_scope.cancel_called,
|
|
||||||
# ^TODO? write a (debugger) test for this ya?
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|
|
@ -468,11 +468,7 @@ async def _open_and_supervise_one_cancels_all_nursery(
|
||||||
|
|
||||||
# errors from this daemon actor nursery bubble up to caller
|
# errors from this daemon actor nursery bubble up to caller
|
||||||
async with (
|
async with (
|
||||||
# collapse_eg(),
|
collapse_eg(),
|
||||||
collapse_eg(
|
|
||||||
bp=True,
|
|
||||||
hide_tb=False,
|
|
||||||
),
|
|
||||||
trio.open_nursery() as da_nursery,
|
trio.open_nursery() as da_nursery,
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
|
@ -485,11 +481,7 @@ async def _open_and_supervise_one_cancels_all_nursery(
|
||||||
# As such if the strategy propagates any error(s) upwards
|
# As such if the strategy propagates any error(s) upwards
|
||||||
# the above "daemon actor" nursery will be notified.
|
# the above "daemon actor" nursery will be notified.
|
||||||
async with (
|
async with (
|
||||||
# collapse_eg(),
|
collapse_eg(),
|
||||||
collapse_eg(
|
|
||||||
bp=True,
|
|
||||||
hide_tb=False,
|
|
||||||
),
|
|
||||||
trio.open_nursery() as ria_nursery,
|
trio.open_nursery() as ria_nursery,
|
||||||
):
|
):
|
||||||
an = ActorNursery(
|
an = ActorNursery(
|
||||||
|
@ -629,17 +621,11 @@ async def _open_and_supervise_one_cancels_all_nursery(
|
||||||
|
|
||||||
# use `BaseExceptionGroup` as needed
|
# use `BaseExceptionGroup` as needed
|
||||||
if len(errors) > 1:
|
if len(errors) > 1:
|
||||||
beg = BaseExceptionGroup(
|
raise BaseExceptionGroup(
|
||||||
'tractor.ActorNursery errored with',
|
'tractor.ActorNursery errored with',
|
||||||
tuple(errors.values()),
|
tuple(errors.values()),
|
||||||
)
|
)
|
||||||
beg.add_note(
|
|
||||||
'This beg was created from an actor-nursery!\n'
|
|
||||||
)
|
|
||||||
await debug.pause(shield=True)
|
|
||||||
raise beg
|
|
||||||
else:
|
else:
|
||||||
# await debug.pause(shield=True)
|
|
||||||
raise list(errors.values())[0]
|
raise list(errors.values())[0]
|
||||||
|
|
||||||
# show frame on any (likely) internal error
|
# show frame on any (likely) internal error
|
||||||
|
@ -697,30 +683,16 @@ async def open_nursery(
|
||||||
# mark us for teardown on exit
|
# mark us for teardown on exit
|
||||||
implicit_runtime: bool = True
|
implicit_runtime: bool = True
|
||||||
|
|
||||||
async with (
|
async with open_root_actor(
|
||||||
# collapse_eg(),
|
|
||||||
collapse_eg(
|
|
||||||
bp=True,
|
|
||||||
hide_tb=False,
|
|
||||||
),
|
|
||||||
open_root_actor(
|
|
||||||
hide_tb=hide_tb,
|
hide_tb=hide_tb,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
) as actor
|
) as actor:
|
||||||
):
|
|
||||||
assert actor is current_actor()
|
assert actor is current_actor()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
async with (
|
async with _open_and_supervise_one_cancels_all_nursery(
|
||||||
# collapse_eg(),
|
|
||||||
collapse_eg(
|
|
||||||
bp=True,
|
|
||||||
hide_tb=False,
|
|
||||||
),
|
|
||||||
_open_and_supervise_one_cancels_all_nursery(
|
|
||||||
actor
|
actor
|
||||||
) as an,
|
) as an:
|
||||||
):
|
|
||||||
|
|
||||||
# NOTE: mark this nursery as having
|
# NOTE: mark this nursery as having
|
||||||
# implicitly started the root actor so
|
# implicitly started the root actor so
|
||||||
|
|
|
@ -561,9 +561,6 @@ async def _pause(
|
||||||
return
|
return
|
||||||
|
|
||||||
elif isinstance(pause_err, trio.Cancelled):
|
elif isinstance(pause_err, trio.Cancelled):
|
||||||
__tracebackhide__: bool = False
|
|
||||||
# XXX, unmask to REPL it.
|
|
||||||
# mk_pdb().set_trace(frame=inspect.currentframe())
|
|
||||||
_repl_fail_report += (
|
_repl_fail_report += (
|
||||||
'You called `tractor.pause()` from an already cancelled scope!\n\n'
|
'You called `tractor.pause()` from an already cancelled scope!\n\n'
|
||||||
'Consider `await tractor.pause(shield=True)` to make it work B)\n'
|
'Consider `await tractor.pause(shield=True)` to make it work B)\n'
|
||||||
|
|
Loading…
Reference in New Issue