-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multi-root discovery: pragmatic, simple consensus. #216
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This issue is a more practical and immediate equivalent of the discussion in #184.
From the start of the project a hacky naive approach to finding the addresses of other "actors" has been this idea of an arbiter which we implement as a "special actor" with methods for looking up (socket) addresses by name. This is of course not an ideal system since there will always be a race during a multi-tree startup for the "arbiter" address as well no flexible consensus system for how that position can be transferred to another tree / root actor when the first is torn down / fails. The fragility is further emphasized in how root actors "check" for the registry (arbiter) existing which is simply do a fast TCP connect and drop on the supposed arbiter socket address.
Summarizing the current naive/questionable design for an address registry:
trio.BrokenResourceError
s to an internalTransportClosed
error which is ignore silentlyDigging into "why" this is in the code:
This "arbiter" idea was originally adopted from other "actor system" projects:
Places to start some research
WIP, will come back.
The text was updated successfully, but these errors were encountered: