Feature #383
closed
Ensure compatibility of versions between sessiond and relayd
Added by Julien Desfossez about 12 years ago.
Updated over 11 years ago.
Description
Just a reminder for us to think about the kind of compatibility we want when :
- a sessiond 2.1 talks to a relayd 2.2
- a sessiond 2.2 talks to relayd 2.1
Do we want to support compatibility in both ways ?
For example 2.2 will introduce the live reading feature, with that the lttcomm_relayd_data_hdr struct will be modified, this header is sent along with each data packet, so it breaks the protocol.
Since the relayd will most likely run on a separate machine, do we want to enforce that every sessiond is updated before allowing streaming again ?
Or do we want to introduce and keep a compatibility layer for each command and data packet ?
Or are we in a mode where we only add new structs and don't modify existing ones (and take the cost of efficiency) ?
I think it needs to be decided before releasing 2.1.
- Status changed from New to Confirmed
- Priority changed from Normal to High
We've thought of a versioning scheme for command in the relayd protocol so the real question here is about the headers which, by design, were "thought" immutable.
So for now, live streaming in 2.2 needs 16 more bytes in that header... which normally are immutable through out the 2.x cycle.
Either we just a the burden of data header versioning on the sesssiond/relayd or we think this through, add the necessary possible future fields and/or padding.
In my opinion, both component should be able to fall back to the least common denominator.
- Priority changed from High to Normal
- Target version changed from 2.1 stable to 2.2
Ok Julien and I (David G.) agree on the fact that sessiond and relayd should fall back on the least common denominator.
For 2.1-stable, there is nothing to do since it's our baseline. The layer handling which structure should be used according to the version check MUST be added in the 2.2 version.
Flagging this for 2.2.
This commit makes sure to validate major version and send versions to both the relayd and sessiond.
ID: 092b625914723e40ccb3345826a2280cbd01f8b8
- Status changed from Confirmed to Resolved
The relayd add stream command was extended in 2.2 so we've added this compat layer in commit d4519fa and 0f907de. The relayd and sessiond negotiate the version at the beginning of the connection and the lowest supported version is used.
For instance, relayd 2.2 and sessiond 2.1 ==> 2.1 is used
Also available in: Atom
PDF