Commit Graph

903 Commits (8a59713d481faa9a0797d5fe634698a85584db58)

Author SHA1 Message Date
Tyler Goodlet 8a59713d48 Re-route errors from spawn tasks and mngr task to handler 2021-10-10 11:54:19 -04:00
Tyler Goodlet 0488f5e57e Drop to a 2 polls for root debugging check 2021-10-10 11:52:24 -04:00
Tyler Goodlet a3cdba0577 Do immediate remote task cancels
As for `Actor.cancel()` requests, do the same for
`Actor._cancel_task()` but use `_invoke()` to ensure
correct msg transactions with caller. Don't cancel task
cancels on a cancel-all-tasks operation in attempt at
more determinism.
2021-10-10 11:42:32 -04:00
Tyler Goodlet 5048c3534f Re-raise KBI's i guess? 2021-10-08 21:01:51 -04:00
Tyler Goodlet 5df08aabb7 Hide some portal stack layers in tracebacks 2021-10-08 18:53:54 -04:00
Tyler Goodlet 1b7cd419f2 Drop old portal helper 2021-10-08 18:20:57 -04:00
Tyler Goodlet e32a5917a9 Don't whine about ; it ain't rpc 2021-10-08 18:20:08 -04:00
Tyler Goodlet 7250deb30f Make OCA nursery **not** a multiplexed mindfuck 2021-10-08 18:18:00 -04:00
Tyler Goodlet 64ebb2aff4 WIP rework trio spanwer to include cancellation logic; not correct yet.. 2021-10-08 18:14:44 -04:00
Tyler Goodlet c02a493d8c Add a maybe-open-debugger helper 2021-10-08 18:13:55 -04:00
Tyler Goodlet fb026e3747 First draft: `.to_asyncio.open_channel_from()` 2021-10-07 23:14:34 -04:00
Tyler Goodlet 2afbc3898f Make actor runtime cancellation immediate 2021-10-07 23:13:47 -04:00
Tyler Goodlet f72eabd42a Drop breakpoint owned lock 2021-10-06 17:05:58 -04:00
Tyler Goodlet 6e646a6fa6 Always cancel the asyncio task? 2021-10-06 17:05:58 -04:00
Tyler Goodlet aa94ea5bcc WIP, add back in root shield, print out pdb sigint opts 2021-10-06 17:05:58 -04:00
Tyler Goodlet a2a4f7af09 Test non-shielding root lock acquire on breakpoint entry 2021-10-06 17:05:58 -04:00
Tyler Goodlet 6da2c3a885 Drop old implementation cruft 2021-10-06 17:05:58 -04:00
Tyler Goodlet ed10f6e0c1 Fix error propagation on asyncio streaming tasks 2021-10-06 17:05:58 -04:00
Tyler Goodlet b43539b252 Drop bad .close() call 2021-10-06 17:05:58 -04:00
Tyler Goodlet fc46f5b74a Proxy asyncio cancelleds as well 2021-10-06 17:05:58 -04:00
Tyler Goodlet efe83f78a3 Don't kill root's immediate children when in debug
If the root calls `trio.Process.kill()` on immediate child proc teardown
when the child is using pdb, we can get stdstreams clobbering that
results in a pdb++ repl where the user can't see what's been typed. Not
killing such children on cancellation / error seems to resolve this
issue whilst still giving reliable termination. For now, code that
special path until a time it becomes a problem for ensuring zombie
reaps.
2021-10-06 17:05:58 -04:00
Tyler Goodlet de87cb510a WIP redo asyncio async gen streaming 2021-10-06 17:05:58 -04:00
Tyler Goodlet e8431bffd0 Support asyncio actors with the trio spawner backend 2021-10-06 17:05:58 -04:00
Tyler Goodlet d720c6a9c2 Support sync code breakpointing via built-in
Override `breakpoint()` for sync code making it work
properly with `trio` as per:

https://github.com/python-trio/trio/issues/1155#issuecomment-742964018

Relates to #193
2021-10-06 17:05:58 -04:00
Tyler Goodlet 732eaaf21e Support asyncio actors with the trio spawner backend 2021-10-06 17:05:58 -04:00
Tyler Goodlet c63323086c Link to SC on wikipedia 2021-10-06 17:05:58 -04:00
Tyler Goodlet 03ae42fa10 Add per actor debug mode toggle 2021-10-06 17:05:58 -04:00
Tyler Goodlet 2cd3a878f0 Support sync code breakpointing via built-in
Override `breakpoint()` for sync code making it work
properly with `trio` as per:

https://github.com/python-trio/trio/issues/1155#issuecomment-742964018

Relates to #193
2021-10-06 17:05:58 -04:00
Tyler Goodlet a237dcd020 Pass func refs 2021-10-06 17:05:58 -04:00
Tyler Goodlet b4fe207369 Add initial infected asyncio error propagation test 2021-10-06 17:05:58 -04:00
Tyler Goodlet 9a994e2de3 Raise any asyncio errors if in trio task on cancel 2021-10-06 17:05:58 -04:00
Tyler Goodlet d2a810d950 Raise from asyncio error; fixes mypy 2021-10-06 17:05:58 -04:00
Tyler Goodlet 07c2151010 Tweak log msg 2021-10-06 17:05:58 -04:00
Tyler Goodlet 0d825ae6d7 Log error 2021-10-06 17:05:58 -04:00
Tyler Goodlet 5be8c86e96 Support asyncio actors with the trio spawner backend 2021-10-06 17:05:58 -04:00
Tyler Goodlet aa069a1edc Revert removal of `infect_asyncio` in nursery start methods 2021-10-06 17:05:58 -04:00
Tyler Goodlet 3c1cc90c40 Attempt to make mypy happy.. 2021-10-06 17:05:58 -04:00
Tyler Goodlet 056ca97d2a Add an obnoxious error message on internal failures 2021-10-06 17:05:58 -04:00
Tyler Goodlet 558ba7e008 Wow, fix all the broken async func invoking code..
Clearly this wasn't developed against a task that spawned just an async
func in `asyncio`.. Fix all that and remove a bunch of unnecessary func
layers. Add provisional support for the target receiving the `to_trio`
and `from_trio` channels and for the @tractor.stream marker.
2021-10-06 17:05:58 -04:00
Tyler Goodlet 1aa70da58b Drop entrypoints from `Actor` 2021-10-06 17:05:58 -04:00
Tyler Goodlet 96cf4a962d Move asyncio guest mode entrypoint to `to_asyncio`
The function is useful if you want to run the "main process" under
`asyncio`. Until `trio` core wraps this better we'll keep our own copy
in the interim (there's a new "inside-out-guest" mode almost on
mainline so hang tight).
2021-10-06 17:05:58 -04:00
Tyler Goodlet fd70965422 Propagate any spawned `asyncio` task error upwards
This should mostly maintain top level SC principles for any task spawned
using `tractor.to_asyncio.run()`. When the `asyncio` task completes make
sure to cancel the pertaining `trio` cancel scope and raise any error
that may have resulted.

Resolves #120
2021-10-06 17:05:58 -04:00
Tyler Goodlet 6ad819362e Add a @pub kwarg to allow specifying a "startup response message" 2021-10-06 17:05:58 -04:00
Tyler Goodlet 16ab14d959 Support sync code breakpointing via built-in
Override `breakpoint()` for sync code making it work
properly with `trio` as per:

https://github.com/python-trio/trio/issues/1155#issuecomment-742964018

Relates to #193
2021-10-06 17:05:58 -04:00
Tyler Goodlet c7e03ae3b4 Fix *args-like type annot 2021-10-06 17:02:38 -04:00
Tyler Goodlet 38b844fb22 Lul, fix everything for cluster helper 2021-10-06 17:02:38 -04:00
Tyler Goodlet 3f8f848ce8 Fix type path to new `_supervise` mod 2021-10-06 17:02:38 -04:00
Tyler Goodlet 2fbc43f0c3 Expose `Lagged` for broadcasting 2021-10-06 17:02:38 -04:00
Tyler Goodlet 9c63cb87c7 Fix top level nursery import 2021-10-06 17:02:38 -04:00
Tyler Goodlet d7e36ad817 Add an async actor cluster spawner prototype 2021-10-06 17:02:38 -04:00