Compare commits

..

No commits in common. "af3c14b250e3a242c51e01a642049e511ae4cdc0" and "4bc443ccae3aefcf1a33e7f047c19483e5f53a33" have entirely different histories.

4 changed files with 16 additions and 11 deletions

View File

@ -410,6 +410,7 @@ def test_peer_canceller(
''' '''
async def main(): async def main():
async with tractor.open_nursery( async with tractor.open_nursery(
# NOTE: to halt the peer tasks on ctxc, uncomment this.
debug_mode=debug_mode, debug_mode=debug_mode,
) as an: ) as an:
canceller: Portal = await an.start_actor( canceller: Portal = await an.start_actor(

View File

@ -238,8 +238,7 @@ def enable_stack_on_sig(
import stackscope import stackscope
except ImportError: except ImportError:
log.error( log.error(
'`stackscope` not installed for use in debug mode!\n' '`stackscope` not installed for use in debug mode!'
'`Ignoring {enable_stack_on_sig!r} call!\n'
) )
return None return None

View File

@ -143,7 +143,7 @@ async def maybe_wait_on_canced_subs(
log.cancel( log.cancel(
'Waiting on cancel request to peer..\n' 'Waiting on cancel request to peer..\n'
f'c)=>\n' f'c)=>\n'
f' |_{chan.aid}\n' f' |_{chan.uid}\n'
) )
# XXX: this is a soft wait on the channel (and its # XXX: this is a soft wait on the channel (and its
@ -156,7 +156,7 @@ async def maybe_wait_on_canced_subs(
# local runtime here is now cancelled while # local runtime here is now cancelled while
# (presumably) in the middle of msg loop processing. # (presumably) in the middle of msg loop processing.
chan_info: str = ( chan_info: str = (
f'{chan.aid}\n' f'{chan.uid}\n'
f'|_{chan}\n' f'|_{chan}\n'
f' |_{chan.transport}\n\n' f' |_{chan.transport}\n\n'
) )
@ -279,7 +279,7 @@ async def maybe_wait_on_canced_subs(
log.runtime( log.runtime(
f'Peer IPC broke but subproc is alive?\n\n' f'Peer IPC broke but subproc is alive?\n\n'
f'<=x {chan.aid}@{chan.raddr}\n' f'<=x {chan.uid}@{chan.raddr}\n'
f' |_{proc}\n' f' |_{proc}\n'
) )
@ -460,7 +460,7 @@ async def handle_stream_from_peer(
# drop ref to channel so it can be gc-ed and disconnected # drop ref to channel so it can be gc-ed and disconnected
con_teardown_status: str = ( con_teardown_status: str = (
f'IPC channel disconnected:\n' f'IPC channel disconnected:\n'
f'<=x uid: {chan.aid}\n' f'<=x uid: {chan.uid}\n'
f' |_{pformat(chan)}\n\n' f' |_{pformat(chan)}\n\n'
) )
chans.remove(chan) chans.remove(chan)
@ -468,7 +468,7 @@ async def handle_stream_from_peer(
# TODO: do we need to be this pedantic? # TODO: do we need to be this pedantic?
if not chans: if not chans:
con_teardown_status += ( con_teardown_status += (
f'-> No more channels with {chan.aid}' f'-> No more channels with {chan.uid}'
) )
server._peers.pop(uid, None) server._peers.pop(uid, None)
@ -519,7 +519,7 @@ async def handle_stream_from_peer(
and and
(ctx_in_debug := pdb_lock.ctx_in_debug) (ctx_in_debug := pdb_lock.ctx_in_debug)
and and
(pdb_user_uid := ctx_in_debug.chan.aid) (pdb_user_uid := ctx_in_debug.chan.uid)
): ):
entry: tuple|None = local_nursery._children.get( entry: tuple|None = local_nursery._children.get(
tuple(pdb_user_uid) tuple(pdb_user_uid)

View File

@ -40,7 +40,7 @@ from typing import (
import trio import trio
from tractor._state import current_actor from tractor._state import current_actor
from tractor.log import get_logger from tractor.log import get_logger
from ._beg import collapse_eg # from ._beg import collapse_eg
if TYPE_CHECKING: if TYPE_CHECKING:
@ -151,8 +151,13 @@ async def gather_contexts(
) )
async with ( async with (
collapse_eg(), # collapse_eg(),
trio.open_nursery() as tn, trio.open_nursery(
# strict_exception_groups=False,
# ^XXX^ TODO? soo roll our own then ??
# -> since we kinda want the "if only one `.exception` then
# just raise that" interface?
) as tn,
): ):
for mngr in mngrs: for mngr in mngrs:
tn.start_soon( tn.start_soon(