[Gluster-devel] Usage of xdata to send anything on wire

Poornima Gurusiddaiah pgurusid at redhat.com
Fri May 13 09:48:51 UTC 2016


Hi, 

In the recent past, have seen multiple instances where we needed to send some data along with the fop on wire. And we have been using the xdata for the same. Eg: 
1. Add lease-id, transaction id to every fop. 
2. Send the xattrs to invalidate in xdata. 
3. Send the share flags during open. 

There were concerns raised around this for the below reasons: 
1. word-size and endianness 
2. security issues 
3. Backward compatibility issues i.e. old/new client and server combination. 

Initiating this mail to arrive at a conclusion, whether we can use xdata or we need to find a different solution, if so what is the solution. 
Your thoughts comments are appreciated. 

Solution 1: 
To get rid of sending xdata on wire, one of the solution could be to have protocol versioning in Gluster. With this we can modify xdr structures for each release and get rid of xdata. But this will be huge work. 

Solution 2: 
- Change dict, to not be an opaque structure , but an array of data elements which is a union of (int, string etc.). 
- Backward compatibility issues is when the newer server/client adds data to dict but the old client/server fails to read the dict. This is the responsibility of the programmer to make sure, thta this case doesn't fail silently, op version can be used if it is done as a part of adding new feature/volume set. Another approach would be, if client has a list of capabilities(features) the server supports it can accordingly tune itself to access the xdata. 

Regards, 
Poornima 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gluster.org/pipermail/gluster-devel/attachments/20160513/d54b35cd/attachment.html>


More information about the Gluster-devel mailing list