Skip to content
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

The bus clients assume the directories names are "Abc.Zebus.DirectoryService.[0-9]" #54

Open
alprema opened this issue Nov 9, 2016 · 1 comment
Labels

Comments

@alprema
Copy link
Collaborator

alprema commented Nov 9, 2016

Since the clients assume the Directories are called Abc.Zebus.DirectoryService.[0-9], the shutdown sequence won't run properly if a Directory is called differently. This will cause the bus to wait for WaitForEndOfStreamAckTimeout because the client will be expecting a shutdown ACK from a Directory with another name. The naming assumption is made here and the ACK handling is done here.

ablanchet added a commit that referenced this issue Nov 18, 2016
…a prefix for the directory peers (related to issue #54)
@ocoanet
Copy link
Member

ocoanet commented Nov 22, 2016

IMO the shutdown sequence is really a minor issue. It can easily be fixed by adding the peer ID in the end-of-stream messages. The main problem is that every peer will keep two ZMQ sockets opened for directories, one that will be created using the naming convention, and one that will be created when replying to the ping command. It is worse if the directory endpoints are switched: the ZMQ sockets will continuously be closed and re-created (when replying to a ping command after sending a directory command).

There are many different options to improve this behavior.

  • My suggestion would be to index sockets by endpoints in ZmqTransport and to support sending transport messages to an empty peer ID. The directory messages could be sent without specifying a peer ID, thus removing the need for directory name conventions.
  • Another option is to validate the directory endpoints configuration. Every directory service could publish errors when the configured endpoint does not match his endpoint and peer ID.

What do you think?

ocoanet referenced this issue Jan 31, 2022
- Remove test-only method
- Extract DirectoryPeerSelector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants