-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gfal-copy transfers fail from srm+gsiftp to srm+https #15
Comments
Hello Andrea, I see you are using the
|
Hello, I've managed to reproduce this problem and here are my findings: After the SRM PUT, the HTTPS TURL that Gfal2 receives shows that the destination file already exists (with size 0) on the HTTP storage. This causes problems for Gfal2 (and underlying Davix library), which wants the file to not exist in order to perform an upload. This is also behind the cryptic error message:
Example:
It looks to me that StoRM creates a 0-size file when the SRM PUT is done. Cheers, |
Hello Mihai, I confirm that StoRM creates a 0-size file before performing the real transfer. Cheers, |
Hi all, I understood that:
is this correct? If yes I think that from our side (StoRM side) we could work to return a dav TURL if it's explicitly requested as transfer protocol. I wrote only "dav" because I cannot find "davs" into the official IANA registered schemes https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml. Cheers, |
Hi, unfortunately, adding the
Cheers, |
Hello both, @enricovianello I would view the "dav://" and "davs://" protocol schemas used in the Grid world more as "HTTP Grid Storage" then actual "Webdav" (as in the IANA document) For the problem at hand, I have to explain a bit on how Gfal2 works with SRM: When you instruct Gfal2 to copy involving SRM, Gfal2 will ask the SRM server for the
So far, I see 3 scenarios here:
Also important to note:
In scenarios Gfal2 offers much better support for same protocol transfers. It allows us to do TPC (ThirdPartyCopy) and even if we have to stream the data, there are optimizations that can be done. For the protocol translation case, we are forced to read segments from source (via one protocol) and write them to the destination (via the other protocol). Scenario
What's the reason for SRM creating the 0-size file on the SRM PrepareToPut call? Cheers, |
Ah, something else to add. The
They don't interfere with why the copy operation fails. If you want, you can disable them via the $ gfal-copy -D"HTTP PLUGIN:RETRIEVE_BEARER_TOKEN=false" <src> <dst> |
Hi Mihai, thank you very much for the clear explanation. StoRM creates a 0-size file with the proper ACL in order to let GridFTP overwrite it with the right permissions. On the other hand, if we try to perform a TPC from srm+gsfitp to srm+https, we respectively see into the StoRM backend and StoRM WebDAV logs both the srmLs check and the HEAD request:
So it seems that in a mixed TPC like this one Gfal2 checks that the HTTPs destination doesn't exist twice. Cheers, |
Hello Andrea, Yes, it checks twice, initially at the SRM level. At this point, the destination file does not exist. Then Gfal2 resolves the SRM TURL into an
|
Hello Mihai, sorry for the late reply. As I explained in a previuos comment, StoRM creates a 0-size file with the proper ACL in order to let GridFTP overwrite it with the right permissions. In fact, a user with the own DN is mapped into an account which must be able to write. Unfortunately, we cannot move directely from Cheers, |
Dear all,
at INFN-T1 we are experiencing the following behaviour with gfal 2.21.4.
Issuing a third-party gfal-copy from srm+gsiftp to srm+https a strange error occurs and the transfer fails, for example:
After a deep investigation, we have figured out that the problem is probably related to the creation of an https TURL triggered by the srm request. Apparently, with an https TURL like this one, gfal tries to perform the transfer issuing only HEAD and POST commands.
Indeed when we try to perform the same transfer using the davs/https protocol as destination
gfal issues also a PUT command and the transfer succeeds.
We have noticed the same thing directly using the protocols gsiftp -> davs/https without involving srm:
Why in an srm+gsiftp -> srm+https transfer the PUT command is not perfomed by gfal?
Is this expected?
For reference, we are investigating this issue also with the StoRM developers:
https://issues.infn.it/jira/browse/STOR-1569
Please, correct me if I am wrong or I made any mistake.
Thank you very much for your help!
Andrea
The text was updated successfully, but these errors were encountered: