-
Notifications
You must be signed in to change notification settings - Fork 3
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
Propagating sign-in/-out information #46
Comments
On this I have to ask "why?" -- why do we stop trusting our coordinators? If Co3 does not trust Co1 about its Directory, what does it trust Co1 about, and why? |
Let us start with the requirements:
A few messaging options:
A few updating options (how does a Coordinator update its global Directory):
I'm for option 2 ("distrusting other Coordinators") due to timing issues. For example:
In order to keep it simple and reliable, I vote that only a Node's Coordinator is a source of truth regarding that Node's Components. |
My proposal:
|
thank you for the illustrative example. I agree with this point.
I think both can be done in one sweep: the local directory already is, according to your definition above, a
So, in essence, a dictionary/key-value store. The coordinator addresses associated with their names are a key-value pair. Above you already say that coordinator addresses are "currently part of local Directory". This looks like it solves the problem? 🤷 |
I'd rather move towards fewer directory types, not more. >.< Note: this is already moving a bit toward specifying implementation. How about we specify a set of behaviours/requirements, and let the implementation(s) hash out how they solve it? |
One final point: If we only trust coordinators with information about their local components, but not about global components (because of the timing issue you bring up), we don't need to distribute the global directory at all, only the coordinator information and local names. |
Let's frame it differently: we want to use the information with the least intermediaries. I always thought, we exchange the local information among Coordinators and they offer the global information to end users. Regarding the content: For the Coordinator, the local Directory contains the identities. That information does not matter to anybody else, therefore, even the transmitted local directory does not contain more, than the names. Only the Coordinators need addresses transferred. Let us define the Directories without the identity (implementation detail). That is even in the direction of discoupling the transport layer from the message layer (you could build a tcp transport layer without those identities). |
Sounds good! (whole comment).
"May", "Should" or "Must"? 😜 |
@bklebel writes:
According to the latest state of the PR #38 (and my latest comments therein, e.g. this comment), I think we should boil down the Control Messages to
SIGN-IN
SIGN-OUT
SEND_DIRECTORY
- a request for the Directory of a Coordinator, subject to change of the message type signature, possibly we would prefer sth like "GET" or "REQ" over "SEND"(please). What do you think? Or was this theCO_TELL_ALL
?CO_UPDATE
- a Coordinator sending its local and global DirectoryIn the comments to #38, relating to the discussion in #44, I proposed to simplify the messages so that Coordinators do not announce individual
SIGN_IN/OUT
actions, but simply send their Directory to all connected Coordinators when it changes.CO_UPDATE
SEND_DIRECTORY
request is received by a Coordinator, they reply with their Directories in theCO_UPDATE
message.CO_UPDATE
message to Co3 which contains updates within the N2 Namespace which Co3 does not have yet, Co3 should, rather than trusting Co1 blindly, at least ask Co2 again for its Directory.CO_UPDATE
message, it updates its Directories, global and local, and possibly starts to sign-in to new remote Coordinators, as discussedOriginally posted by @bklebel in #29 (comment)
The text was updated successfully, but these errors were encountered: