Feature #383


Ensure compatibility of versions between sessiond and relayd

Added by Julien Desfossez over 11 years ago. Updated about 11 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


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.

Actions #1

Updated by David Goulet over 11 years ago

  • Status changed from New to Confirmed
Actions #2

Updated by David Goulet over 11 years ago

  • 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.

Actions #3

Updated by Yannick Brosseau over 11 years ago

In my opinion, both component should be able to fall back to the least common denominator.

Actions #4

Updated by David Goulet over 11 years ago

  • 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.

Actions #5

Updated by David Goulet over 11 years ago

This commit makes sure to validate major version and send versions to both the relayd and sessiond.

ID: 092b625914723e40ccb3345826a2280cbd01f8b8

Actions #6

Updated by David Goulet about 11 years ago

  • 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