xrootd / xrootd

The XRootD central repository https://my.cdash.org/index.php?project=XRootD
http://xrootd.org
Other
165 stars 151 forks source link

xrdcp : handling of --cksum option #459

Closed DmitryLitvintsev closed 7 years ago

DmitryLitvintsev commented 7 years ago

Hi,

I am dCache developer at Fermilab. Recently we had a report of

xrdcp --cksum adle32:value ....

failures when trying to upload files to dCache via dCache XRootD door.

Investigation showed that this is due to capitalization in name of the checksum algorithm.

That is, dCache replies with "ADLER32 value" name + value string and the name "ADLER32" fails to match to "adler32" in xrdcp producing error like so:

[litvinse@fnisd1 ~]$ xrdcp --cksum "adler32:755bd205" /tmp/dcache-2.13.34-1.noarch.rpm root://quantaplex/pnfs/fs/usr/test/good1 [73.01MB/73.01MB][100%][==================================================][73.01MB/s] Run: [ERROR] CheckSum error [litvinse@fnisd1 ~]$ echo $? 53

and

[litvinse@fnisd1 ~]$ xrdcp --cksum "adler32:print" /tmp/dcache-2.13.34-1.noarch.rpm root://quantaplex/pnfs/fs/usr/test/good [73.01MB/73.01MB][100%][==================================================][2.704MB/s]
Run: [ERROR] CheckSum error [litvinse@fnisd1 ~]$ echo $? 53

whereas:

[litvinse@fnisd1 ~]$ xrdfs root://quantaplex query checksum /pnfs/fs/usr/test/good1 ADLER32 755bd205 [litvinse@fnisd1 ~]$ echo $? 0

Of course we can possibly fix it by returning "adler32" (And I have tested that thus works). But I would like to ask you if you could consider change the client as well.

My understanding is that all what xrdcp should do in case of option

--cksum name:value

is to pass (name,value) pair to server and server will check if name is supported and if not reply with error, else compare the value with calculated checksum on the server side. This means that name could be anything, any string.

Anyway, is it possible to have the string comparison of algorithm names be case insensitive in xrdcp?

Thanks, Dmitry

abh3 commented 7 years ago

Yes, I agree that this is a nuisance on many levels. Yes, it seems the best solution here is to make it case insensitive for comparison purposes. However, the same issue exists in the XrootD server so that would have to change as well. In other words for full consistency, the case of the checksum shouldn't matter. Before we go down that path, is dCache case insensitive to checksum names as well?

DmitryLitvintsev commented 7 years ago

Hi Andrew,

Yes. dCache is case insensitive to checksum names. I belive we were guided by these two documents:

https://tools.ietf.org/html/rfc3230 http://www.iana.org/assignments/http-dig-alg/http-dig-alg.xml

Thanks, Dmitry

abh3 commented 7 years ago

OK, we will fix this then. Thank you for bringing it to our attention.