Use `nest_from_op()` in actor-nursery shutdown
Including a new one-line `_shutdown_msg: str` which we mod-var-set for testing usage and some denoising at `.info()` level. Adjust `Actor()` instantiating input to the new `.registry_addrs` wrapped addrs property.free_threading_prep
parent
ae91310b32
commit
fe5e6e2ab0
|
@ -21,7 +21,6 @@
|
||||||
from contextlib import asynccontextmanager as acm
|
from contextlib import asynccontextmanager as acm
|
||||||
from functools import partial
|
from functools import partial
|
||||||
import inspect
|
import inspect
|
||||||
from pprint import pformat
|
|
||||||
from typing import (
|
from typing import (
|
||||||
TYPE_CHECKING,
|
TYPE_CHECKING,
|
||||||
)
|
)
|
||||||
|
@ -31,7 +30,10 @@ import warnings
|
||||||
import trio
|
import trio
|
||||||
|
|
||||||
|
|
||||||
from .devx.debug import maybe_wait_for_debugger
|
from .devx import (
|
||||||
|
debug,
|
||||||
|
pformat as _pformat,
|
||||||
|
)
|
||||||
from ._addr import (
|
from ._addr import (
|
||||||
UnwrappedAddress,
|
UnwrappedAddress,
|
||||||
mk_uuid,
|
mk_uuid,
|
||||||
|
@ -200,7 +202,7 @@ class ActorNursery:
|
||||||
loglevel=loglevel,
|
loglevel=loglevel,
|
||||||
|
|
||||||
# verbatim relay this actor's registrar addresses
|
# verbatim relay this actor's registrar addresses
|
||||||
registry_addrs=current_actor().reg_addrs,
|
registry_addrs=current_actor().registry_addrs,
|
||||||
)
|
)
|
||||||
parent_addr: UnwrappedAddress = self._actor.accept_addr
|
parent_addr: UnwrappedAddress = self._actor.accept_addr
|
||||||
assert parent_addr
|
assert parent_addr
|
||||||
|
@ -454,7 +456,7 @@ async def _open_and_supervise_one_cancels_all_nursery(
|
||||||
# the "hard join phase".
|
# the "hard join phase".
|
||||||
log.runtime(
|
log.runtime(
|
||||||
'Waiting on subactors to complete:\n'
|
'Waiting on subactors to complete:\n'
|
||||||
f'{pformat(an._children)}\n'
|
f'>}} {len(an._children)}\n'
|
||||||
)
|
)
|
||||||
an._join_procs.set()
|
an._join_procs.set()
|
||||||
|
|
||||||
|
@ -468,7 +470,7 @@ async def _open_and_supervise_one_cancels_all_nursery(
|
||||||
# will make the pdb repl unusable.
|
# will make the pdb repl unusable.
|
||||||
# Instead try to wait for pdb to be released before
|
# Instead try to wait for pdb to be released before
|
||||||
# tearing down.
|
# tearing down.
|
||||||
await maybe_wait_for_debugger(
|
await debug.maybe_wait_for_debugger(
|
||||||
child_in_debug=an._at_least_one_child_in_debug
|
child_in_debug=an._at_least_one_child_in_debug
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -544,7 +546,7 @@ async def _open_and_supervise_one_cancels_all_nursery(
|
||||||
|
|
||||||
# XXX: yet another guard before allowing the cancel
|
# XXX: yet another guard before allowing the cancel
|
||||||
# sequence in case a (single) child is in debug.
|
# sequence in case a (single) child is in debug.
|
||||||
await maybe_wait_for_debugger(
|
await debug.maybe_wait_for_debugger(
|
||||||
child_in_debug=an._at_least_one_child_in_debug
|
child_in_debug=an._at_least_one_child_in_debug
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -593,6 +595,10 @@ async def _open_and_supervise_one_cancels_all_nursery(
|
||||||
# final exit
|
# final exit
|
||||||
|
|
||||||
|
|
||||||
|
_shutdown_msg: str = (
|
||||||
|
'Actor-runtime-shutdown'
|
||||||
|
)
|
||||||
|
|
||||||
# @api_frame
|
# @api_frame
|
||||||
@acm
|
@acm
|
||||||
async def open_nursery(
|
async def open_nursery(
|
||||||
|
@ -681,17 +687,26 @@ async def open_nursery(
|
||||||
):
|
):
|
||||||
__tracebackhide__: bool = False
|
__tracebackhide__: bool = False
|
||||||
|
|
||||||
msg: str = (
|
|
||||||
'Actor-nursery exited\n'
|
op_nested_an_repr: str = _pformat.nest_from_op(
|
||||||
f'|_{an}\n'
|
input_op=')>',
|
||||||
|
text=f'{an}',
|
||||||
|
# nest_prefix='|_',
|
||||||
|
nest_indent=1, # under >
|
||||||
)
|
)
|
||||||
|
an_msg: str = (
|
||||||
|
f'Actor-nursery exited\n'
|
||||||
|
f'{op_nested_an_repr}\n'
|
||||||
|
)
|
||||||
|
# keep noise low during std operation.
|
||||||
|
log.runtime(an_msg)
|
||||||
|
|
||||||
if implicit_runtime:
|
if implicit_runtime:
|
||||||
# shutdown runtime if it was started and report noisly
|
# shutdown runtime if it was started and report noisly
|
||||||
# that we're did so.
|
# that we're did so.
|
||||||
msg += '=> Shutting down actor runtime <=\n'
|
msg: str = (
|
||||||
|
'\n'
|
||||||
|
'\n'
|
||||||
|
f'{_shutdown_msg} )>\n'
|
||||||
|
)
|
||||||
log.info(msg)
|
log.info(msg)
|
||||||
|
|
||||||
else:
|
|
||||||
# keep noise low during std operation.
|
|
||||||
log.runtime(msg)
|
|
||||||
|
|
Loading…
Reference in New Issue