forked from goodboy/tractor
1
0
Fork 0

Right, only worry about pdb lock when in debug mode

immediate_remote_cancels
Tyler Goodlet 2021-10-15 09:29:25 -04:00
parent a42ec1f571
commit e4ed0fd2b3
2 changed files with 17 additions and 15 deletions

View File

@ -21,7 +21,7 @@ from trio_typing import TaskStatus
from .log import get_logger from .log import get_logger
from . import _state from . import _state
from ._discovery import get_root from ._discovery import get_root
from ._state import is_root_process from ._state import is_root_process, debug_mode
from ._exceptions import is_multi_cancelled from ._exceptions import is_multi_cancelled
try: try:
@ -525,7 +525,7 @@ post_mortem = partial(
async def _maybe_enter_pm(err): async def _maybe_enter_pm(err):
if ( if (
_state.debug_mode() debug_mode()
# NOTE: don't enter debug mode recursively after quitting pdb # NOTE: don't enter debug mode recursively after quitting pdb
# Iow, don't re-enter the repl if the `quit` command was issued # Iow, don't re-enter the repl if the `quit` command was issued
@ -572,7 +572,7 @@ async def maybe_wait_for_debugger(
poll_delay: float = 0.1, poll_delay: float = 0.1,
) -> None: ) -> None:
if not _state.debug_mode(): if not debug_mode():
return return
if ( if (

View File

@ -30,6 +30,7 @@ from ._state import (
current_actor, current_actor,
is_main_process, is_main_process,
is_root_process, is_root_process,
debug_mode,
) )
from .log import get_logger from .log import get_logger
@ -242,17 +243,19 @@ async def new_proc(
subactor.uid) subactor.uid)
except trio.Cancelled: except trio.Cancelled:
cancel_during_spawn = True cancel_during_spawn = True
# we may cancel before the child connects back in which # we may cancel before the child connects back in which
# case avoid clobbering the pdb tty. # case avoid clobbering the pdb tty.
with trio.CancelScope(shield=True): if debug_mode():
# don't clobber an ongoing pdb with trio.CancelScope(shield=True):
if is_root_process(): # don't clobber an ongoing pdb
await maybe_wait_for_debugger() if is_root_process():
else: await maybe_wait_for_debugger()
async with acquire_debug_lock(uid): else:
# soft wait on the proc to terminate async with acquire_debug_lock(uid):
with trio.move_on_after(0.5): # soft wait on the proc to terminate
await proc.wait() with trio.move_on_after(0.5):
await proc.wait()
raise raise
portal = Portal(chan) portal = Portal(chan)
@ -312,9 +315,8 @@ async def new_proc(
# don't clobber an ongoing pdb # don't clobber an ongoing pdb
await maybe_wait_for_debugger() await maybe_wait_for_debugger()
if cancel_during_spawn: # Try again to avoid TTY clobbering.
if cancel_during_spawn and debug_mode():
# Try again to avoid TTY clobbering.
async with acquire_debug_lock(uid): async with acquire_debug_lock(uid):
with trio.move_on_after(0.5): with trio.move_on_after(0.5):
await proc.wait() await proc.wait()