Always call `Actor.cancel()` at end of root's main task
It's simpler and the only real logical difference is logging messages. This should also give us an overall consistent tear down sequence.drop_warn
parent
676cdafa8f
commit
3b8684f655
|
@ -1083,20 +1083,13 @@ async def _start_actor(
|
|||
try:
|
||||
result = await main()
|
||||
except (Exception, trio.MultiError) as err:
|
||||
try:
|
||||
log.exception("Actor crashed:")
|
||||
await _debug._maybe_enter_pm(err)
|
||||
|
||||
raise
|
||||
|
||||
finally:
|
||||
await actor.cancel()
|
||||
|
||||
# XXX: the actor is cancelled when this context is complete
|
||||
# given that there are no more active peer channels connected
|
||||
actor.cancel_server()
|
||||
actor._service_n.cancel_scope.cancel()
|
||||
|
||||
# unset module state
|
||||
_state._current_actor = None
|
||||
log.info("Completed async main")
|
||||
|
|
Loading…
Reference in New Issue