Description of problem: When new features are added, we might need to extend/change the existing RPC Procedures. This breaks backward compatibility with old clients unless there is support for versioning of rpc programs thereby allowing existence of two versions of same procedure. Clients would then be able to choose the version they would want to send requests to as part of the negotiation/handshake. This when implemented would reduce the need to extend the features using xdata which is opaque object for RPC. The xdata method is more prone to errors because RPC can't impose checks on xdata.
This feature is already available with RPC implementation in glusterfs. For better reading: https://github.com/gluster/glusterfs/blob/master/doc/developer-guide/rpc-for-glusterfs.new-versions.md