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 

_______________________________________________
Gluster-devel mailing list
[email protected]
http://www.gluster.org/mailman/listinfo/gluster-devel

Reply via email to