forked from goodboy/tractor
1
0
Fork 0

Merge pull request 'Duplicated channel on `Actor._peers` causes hang on `portal.cancel_actor()`' (#25) from discovery_dedup into main

Reviewed-on: goodboy/tractor#25
guille 2025-04-13 20:53:23 +00:00
commit 4e8404bb09
1 changed files with 9 additions and 3 deletions

View File

@ -114,9 +114,15 @@ def get_peer_by_name(
''' '''
actor: Actor = current_actor() actor: Actor = current_actor()
to_scan: dict[tuple, list[Channel]] = actor._peers.copy() to_scan: dict[tuple, list[Channel]] = actor._peers.copy()
pchan: Channel|None = actor._parent_chan
if pchan: # TODO: is this ever needed? creates a duplicate channel on actor._peers
to_scan[pchan.uid].append(pchan) # when multiple find_actor calls are made to same actor from a single ctx
# which causes actor exit to hang waiting forever on
# `actor._no_more_peers.wait()` in `_runtime.async_main`
# pchan: Channel|None = actor._parent_chan
# if pchan and pchan.uid not in to_scan:
# to_scan[pchan.uid].append(pchan)
for aid, chans in to_scan.items(): for aid, chans in to_scan.items():
_, peer_name = aid _, peer_name = aid