Closed DmitryLitvintsev closed 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?
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
OK, we will fix this then. Thank you for bringing it to our attention.
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