forked from goodboy/tractor
Graceful cancel actors before hard reaping
parent
121f7fd844
commit
7eb465a699
|
@ -295,7 +295,17 @@ async def new_proc(
|
|||
# ``trio.Process.__aexit__()`` (it tears down stdio
|
||||
# which will kill any waiting remote pdb trace).
|
||||
# This is a "soft" (cancellable) join/reap.
|
||||
await proc.wait()
|
||||
try:
|
||||
await proc.wait()
|
||||
except trio.Cancelled:
|
||||
# if cancelled during a soft wait cancel the child
|
||||
# actor before entering the hard reap
|
||||
# sequence below. This means we try to do a
|
||||
# graceful teardown before getting out zombie
|
||||
# killing tools.
|
||||
with trio.CancelScope(shield=True):
|
||||
await portal.cancel_actor()
|
||||
raise
|
||||
|
||||
# cancel result waiter that may have been spawned in
|
||||
# tandem if not done already
|
||||
|
|
Loading…
Reference in New Issue