tractor/tractor
Tyler Goodlet f57cc66a7f Solve the root-cancels-child-in-tty-lock race
Finally this makes a cancelled root actor nursery not clobber child
tasks which request and lock the root's tty for the debugger repl.

Using an edge triggered event which is set after all fifo-lock-queued
tasks are complete, we can be sure that no lingering child tasks are
going to get interrupted during pdb use and tty lock acquisition.
Further, even if new tasks do queue up to get the lock, the root will
incrementally send cancel msgs to each sub-actor only once the tty is
not locked by a (set of) child request task(s). Add shielding around all
the critical sections where the child attempts to allocate the lock from
the root such that it won't be disrupted from cancel messages from the
root after the acquire lock transaction has started.
2021-07-01 19:33:43 -04:00
..
testing Drop trailing comma 2021-07-01 15:04:58 -04:00
__init__.py Expose streaming components at top level 2021-07-01 15:02:47 -04:00
_actor.py First try: pack cancelled tracebacks and ship to caller 2021-07-01 19:33:41 -04:00
_child.py Docstring to the top\!, and redundant spaces goodbye\! 2020-07-29 15:39:38 -03:00
_debug.py Solve the root-cancels-child-in-tty-lock race 2021-07-01 19:33:43 -04:00
_discovery.py Port inter-process method calls to `Portal.run_from_ns()` 2020-12-22 10:39:47 -05:00
_entry.py Experiment: only disable SIGINT handling in children 2021-07-01 16:24:37 -04:00
_exceptions.py First try: pack cancelled tracebacks and ship to caller 2021-07-01 19:33:41 -04:00
_forkserver_override.py Ignore type checks on stdlib overrides 2021-02-21 14:08:23 -05:00
_ipc.py Mypy fixes to enforce uid tuple 2021-07-01 14:52:52 -04:00
_mp_fixup_main.py Fix more stdlib typing issues with latest mypy 2021-02-21 12:48:03 -05:00
_portal.py Always shield cancel the caller on cancel-causing-errors, add teardown logging 2021-07-01 19:33:43 -04:00
_root.py Don't shield on root cancel it can causes hangs 2021-07-01 16:24:37 -04:00
_spawn.py Fix hard kill in debug mode; only do it when debug lock is empty 2021-07-01 16:25:48 -04:00
_state.py Add a no runtime error 2021-04-28 12:23:08 -04:00
_streaming.py Always shield cancel the caller on cancel-causing-errors, add teardown logging 2021-07-01 19:33:43 -04:00
_trionics.py Solve the root-cancels-child-in-tty-lock race 2021-07-01 19:33:43 -04:00
log.py Add PDB level and make runtime below info but above debug 2021-07-01 16:25:48 -04:00
msg.py Adjustments for non-frozen context dataclass change 2021-07-01 15:04:58 -04:00