-
Notifications
You must be signed in to change notification settings - Fork 7
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
fairmq/commands: Implement a protocol version #22
Comments
In your example the FairMQ SDK client communicates to the FairMQ DDS plugin via DDS custom commands. Two possible implementations come to mind:
|
https://github.com/FairRootGroup/FairMQ/blob/868fe02ee9a332b1c7641c1da9bfa0f8e04ac46d/fairmq/sdk/Topology.h#L286-L287 This looks like a suitable message exchange to add also a version check. It is always sent to all devices at the very beginning of the lifetime of a |
Having a handshake with a version number is a good solution. But I would implement a dedicated handshake message for this purpose. Probably you'll want to extend a handshake message in the future with more checks. |
I agree, looking at the code I realized @rbx was very thourough and already made a So, we can have a clean, separate handshake type of message and still send it on the same round-trip together with the |
Only tricky part is, how and when to return if there are (partial) mismatches. The ctor has two modes,
|
Another option is to return an error / throw an exception from any public API method of |
Is your feature request related to a problem? Please describe.
Imagine the following example. ODC is built on a node using FairMQ version X. Then ODC starts a topology on a cluster where a FairMQ version Y is used. If there are no changes in the protocol between version X and Y then everything works fine. But if there are incompatible changes then the system stops working correctly.
Describe the solution you'd like
Having a protocol version helps to identify a possible incompatibility between two instances communicating via FairMQ.SDK. One can also consider having a schema evolution of the protocol but I think it's overkill.
The text was updated successfully, but these errors were encountered: