Hi, The error occurs or is detected by XrdClHttp: [2021-05-06 08:53:09.092614 +0200][Error ][XrdClHttp ] Could not read URL: http:[log in to unmask]:8000//path/to/file?, error: [ERROR] Internal error: no such device or address: Result Invalid Read in request after 3 attempts Now we have to figure out why it happens in XrdClHttp for the original source server. I'd guess there is some issue with file size. What files-size does xrootd report at open / attach time? Is this is the same as file-size on the server? What version of xrootd is this? I've never used XrdClHttp so I don;t know how it's packaged / versioned ... does it have a separate version? Cheers, Matevz On 5/10/21 3:07 AM, Bertrand RIGAUD wrote: > Hello, > > well I don't think XcacheH is related to this issue. It's the same behaviour whether or not XcacheH is activated > > in xcache data folder, I have the file but the size is just under the entire size (the last chunk is missing) > it depends on the pfc.blocksize I choose. > > let's say I have a file of 10MB and a pfc.blocksize set to 4MB, my downloaded file (in xcache data folder and by extension on the client machine) will be 8MB, and, in the xcache logs, I will have two 4MB chunks OK, and the last chunk will be failed and it will be mentionned that the rest (2MB) can't be downloaded because it cannot be read. > > [2021-05-10 10:30:18.127994 +0200][Error ][XrdClHttp ] Could not read URL: http://u23@source_server:8000//path/to/the/file?, error: [ERROR] Internal error: no such device or address: Result Invalid Read in request after 3 attempts > > > > I performed another test: > > I downloaded the file from the source server using curl. I have the fully downloaded file (same amount of bytes that is told by curl "Content-Length" attribute). > I copied this file on a simple VM at our site and expose it through a basic http server (python -m SimpleHTTPServer 80) > I downloaded the entire file through xcache! No error message in xcache logs, file is fully downloaded on xcache data folder and on client machine. > > So, > > there is no problem with the file itself > there is no problem when downloading from the source server using curl or wget > there is no problem between xcache and my basic http server > but there is a problem between xcache and the source server > > What in the communication between xcache and the source server can prevents from reading the last chunk of a file? > > regards, > > Bertrand Rigaud > > Centre de Calcul de l'IN2P3 - CNRS > 21 avenue Pierre de Coubertin > 69627 Villeurbanne CEDEX > Tél : 04.78.93.08.80 > > ----- Mail original ----- > De: "Yang, Wei" <[log in to unmask]> > À: "Bertrand RIGAUD" <[log in to unmask]>, "xrootd-l" <[log in to unmask]> > Envoyé: Samedi 8 Mai 2021 00:46:50 > Objet: Re: http ingest using xcache fails > > Hmm, I think XcacheH is still more or less experimental. That said, it should still work. Can you go inside the cache directory to find a file name http/path/to/my/file and see if that file is fully cache (size, checksum) ? > > regards, > -- > Wei Yang | [log in to unmask] | 650-926-3338(O) > > -----Original Message----- > From: <[log in to unmask]> on behalf of Bertrand RIGAUD <[log in to unmask]> > Date: Thursday, May 6, 2021 at 4:47 AM > To: <[log in to unmask]> > Subject: http ingest using xcache fails > > Hi, > > Trying to deploy this architecture (https://cvmfs.readthedocs.io/en/stable/_images/xcache2.svg), I'm facing a problem when downloading a file through http. > > Everythting works well till the last chunk is downloaded. > > As an example, here is a simple curl performed from the client machine (and this is the same behaviour with cvmfs client) : > > ### Through xcache server ### > > $ curl -v -o file1 http://my_xcache_server:1094//http://path/to/my/file > % Total % Received % Xferd Average Speed Time Time Time Current > Dload Upload Total Spent Left Speed > 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to my_xcache_server port 1094 (#0) > * Trying xxx.xxx.xxx.xxx... > * Connected to my_xcache_server (xxx.xxx.xxx.xxx) port 1094 (#0) > > GET //http://path/to/my/file HTTP/1.1 > > User-Agent: curl/7.29.0 > > Host: my_xcache_server:1094 > > Accept: */* > > > < HTTP/1.1 200 OK > < Connection: Keep-Alive > < Content-Length: 506173152 > < > { [data not shown] > 99 482M 99 480M 0 0 57.9M 0 0:00:08 0:00:08 --:--:-- 29.9M* transfer closed with 2856672 bytes remaining to read > 99 482M 99 480M 0 0 57.7M 0 0:00:08 0:00:08 --:--:-- 11.5M > * Closing connection 0 > curl: (18) transfer closed with 2856672 bytes remaining to read > > > ### Direct download ### > > curl -v -o file2 http://path/to/my/file > % Total % Received % Xferd Average Speed Time Time Time Current > Dload Upload Total Spent Left Speed > 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to source_server port 8000 (#0) > * Trying 145.146.100.30... > * Connected to source_server (xxx.xxx.xxx.xxx) port 8000 (#0) > > GET path/to/my/file HTTP/1.1 > > User-Agent: curl/7.29.0 > > Host: source_server:8000 > > Accept: */* > > > < HTTP/1.1 200 OK > < Connection: Keep-Alive > < Content-Length: 506173152 > < > { [data not shown] > 100 482M 100 482M 0 0 101M 0 0:00:04 0:00:04 --:--:-- 101M > * Connection #0 to host source_server left intact > > ### Xcache server logs (last chunk) ### > > 210506 08:53:05 155627 sysXrdHttp: XrdHttpReq::Data! final=1 > 210506 08:53:05 155627 unknown.2:23@clientmachine sysXrdHttp: PostProcessHTTPReq req: 2 reqstate: 481 > 210506 08:53:05 155627 unknown.2:23@clientmachine sysXrdHttp: Got data vectors to send:1 > 210506 08:53:05 155627 sysXrdHttp: Sending 1048576 bytes > 210506 08:53:05 155627 unknown.2:23@clientmachine sysXrdHttp: Process. lp:0 reqstate: 481 > 210506 08:53:05 155627 unknown.2:23@clientmachine sysXrdHttp: Process is exiting rc:0 > 210506 08:53:05 155627 XrdPfc_IO: dump Read() 0x7fc1d00019f0 off: 503316480 size: 1048576 http:[log in to unmask]:8000/http/source.server:8000/path/to/file? > 210506 08:53:05 155627 XrdPfc_File: dump Read() idx 120 http/source.server:8000/path/to/file > 210506 08:53:05 155627 XrdPfc_File: dump inc_ref_count 0x7fc1a0403530 refcnt 1 http/source.server:8000/path/to/file > 210506 08:53:05 155627 XrdPfc_File: dump Read() 0x7fc1f0028000inc_ref_count for existing block 0x7fc1a0403530 idx = 120 http/source.server:8000/path/to/file > XcacheH: stagein list snapshot: available workers: 10, list length: 0 > [2021-05-06 08:53:09.092614 +0200][Error ][XrdClHttp ] Could not read URL: http:[log in to unmask]:8000//path/to/file?, error: [ERROR] Internal error: no such device or address: Result Invalid Read in request after 3 attempts > 210506 08:53:09 155645 XrdPfc_File: dump Prefetch enter to check download status http/source.server:8000/path/to/file > 210506 08:53:09 155645 XrdPfc_File: debug Prefetch file is complete, stopping prefetch. http/source.server:8000/path/to/file > 210506 08:53:09 155626 XrdPfc_File: dump ProcessBlockResponse block=0x7fc1a0403530, idx=120, off=503316480, res=-6 http/source.server:8000/path/to/file > 210506 08:53:09 155626 XrdPfc_File: debug ProcessBlockResponse after failed prefetch on io 0x7fc1d00019f0 disabling prefetching on this io. http/source.server:8000/path/to/file > 210506 08:53:09 155626 XrdPfc_File: error ProcessBlockResponse block 0x7fc1a0403530, idx=120, off=503316480 error=-6 http/source.server:8000/path/to/file > 210506 08:53:09 155627 XrdPfc_File: dump Read() requested block finished 0x7fc1a0403530, is_failed()=True http/source.server:8000/path/to/file > 210506 08:53:09 155627 XrdPfc_File: error Read() io 0x7fc1d00019f0, block 120 finished with error 6 no such device or address http/source.server:8000/path/to/file > 210506 08:53:09 155627 XrdPfc_File: dump Read() dec_ref_count 0x7fc1a0403530 idx = 120 http/source.server:8000/path/to/file > 210506 08:53:09 155627 XrdPfc_File: dump free_block block 0x7fc1a0403530 idx = 120 http/source.server:8000/path/to/file > 210506 08:53:09 155627 XrdPfc_IO: warning Read() error in File::Read(), exit status=-6, error=no such device or address http:[log in to unmask]:8000/http/source.server:8000/path/to/file? > 210506 08:53:09 155627 ofs_read: unknown.2:23@clientmachine Unable to read /http:/source.server:8000/path/to/file; no such device or address > 210506 08:53:09 155627 sysXrdHttp: XrdHttpReq::Error > 210506 08:53:09 155627 unknown.2:23@clientmachine sysXrdHttp: PostProcessHTTPReq req: 2 reqstate: 482 > 210506 08:53:09 155627 unknown.2:23@clientmachine sysXrdHttp: PostProcessHTTPReq mapping Xrd error [3005] to status code [500] > 210506 08:53:09 155627 unknown.2:23@clientmachine sysXrdHttp: Stopping request because more data is expected but no data has been read. > 210506 08:53:09 155627 sysXrdHttp: XrdHttpReq request ended. > 210506 08:53:09 155627 sysXrdHttp: Cleanup > 210506 08:53:09 155627 sysXrdHttp: Reset > 210506 08:53:09 155627 sysXrdHttp: XrdHttpReq request ended. > 210506 08:53:09 155627 XrootdXeq: unknown.2:23@clientmachine disc 0:00:09 (send failure) > 210506 08:53:09 155627 XrdPfc_File: debug ioActive start for io 0x7fc1d00019f0 http/path/to/file > 210506 08:53:09 155627 XrdPfc_File: info ioActive for io 0x7fc1d00019f0, active_prefetches 0, allow_prefetching False, ioactive_false_reported False, ios_in_detach 0 > 210506 08:53:09 155627 XrdPfc_File: info io_map.size() 1, block_map.size() 0, file http/path/to/file > 210506 08:53:09 155627 XrdPfc_File: info ioActive for io 0x7fc1d00019f0 returning False, file http/path/to/file > 210506 08:53:09 155627 XrdPfc_IO: info DetachFinalize() 0x7fc1d00019f0 > 210506 08:53:09 155627 XrdPfc_Cache: debug ReleaseFile http/path/to/file, io 0x7fc1d00019f0 > 210506 08:53:09 155627 XrdPfc_File: debug RemoveIO() io = 0x7fc1d00019f0 http/path/to/file > 210506 08:53:09 155627 XrdPfc_Cache: debug dec_ref_cnt http/path/to/file, cnt at entry = 1 > 210506 08:53:09 155627 XrdPfc_File: debug FinalizeSyncBeforeExit requesting sync to write detach stats http/path/to/file > 210506 08:53:09 155627 XrdPfc_Cache: debug dec_ref_cnt http/path/to/file, scheduling final sync > 210506 08:53:09 155627 XrdPfc_IO: debug ~IOEntireFile() 0x7fc1d00019f0 http:[log in to unmask]:8000/http/path/to/file? > 210506 08:53:09 155627 Posix_PrepIODisable: Disabling defered open http:[log in to unmask]:8000//path/to/file? > 210506 08:53:09 160872 XrdPfc_File: dump Sync() http/path/to/file > 210506 08:53:09 160872 XrdPfc_File: dump Sync 0 blocks written during sync http/path/to/file > 210506 08:53:09 160872 XrdPfc_Cache: debug dec_ref_cnt http/path/to/file, cnt at entry = 1 > 210506 08:53:09 160872 XrdPfc_File: debug FinalizeSyncBeforeExit sync not required http/path/to/file > 210506 08:53:09 160872 XrdPfc_Cache: debug dec_ref_cnt http/path/to/file, cnt after sync_check and dec_ref_cnt = 0 > 210506 08:53:09 160872 XrdPfc_File: debug ~File() close info http/path/to/file > 210506 08:53:09 160872 XrdPfc_File: debug ~File() close output http/path/to/file > 210506 08:53:09 160872 XrdPfc_File: debug ~File() ended, prefetch score = 3.95238 http/path/to/file > 210506 08:53:11 155631 Posix_DDestroy: DLY destory of 1 objects; 0 already lost. > 210506 08:53:11 155631 Posix_DDestroy: DLY destory end; 0 objects deferred and 0 lost. > > ### Xcache config ### > > all.role proxy server > > all.export /http:/ > all.export /https:/ > > ofs.osslib libXrdPss.so > > xrootd.seclib /usr/lib64/libXrdSec.so > > pss.origin =http,https > > # US data servers > pss.permit source.server > pss.permit source.server > pss.permit source.server > pss.permit source.server > pss.permit source.server > pss.permit source.server > pss.permit source.server > # EU data servers > pss.permit source.server > pss.permit source.server > pss.permit source.server > > pss.cachelib libXrdPfc.so > pss.config streams 8 > > # XcacheH > pss.namelib -lfncachesrc+ /usr/lib64/XrdName2NameXcacheH.so cacheLife=1d cacheBlockSize=4m > pss.ccmlib /usr/lib64/XrdName2NameXcacheH.so > > oss.localroot /xcache/ns > > # Metadata directories (cinfo files) > oss.space meta /xcache/meta > > # Data directories > oss.space data /xcache/data > > # Xcache spaces assignement > pfc.spaces data meta > > if exec xrootd > xrd.protocol http:1094 libXrdHttp.so > fi > > pfc.diskusage 0.90 0.95 > > pfc.ram 6g > pfc.blocksize 4M > pfc.prefetch 32 > > pfc.trace dump > http.trace all > pss.trace all > pss.debug > > ### xrootd version: 5.1.1 ### > > As a result, I got an almost file downloaded on client side, and also in xcache server, cached data is an almost file. Just this last chunk missing. > > Are there directives missing in congig file? > > Thank you, > > Bertrand Rigaud > > Centre de Calcul de l'IN2P3 - CNRS > 21 avenue Pierre de Coubertin > 69627 Villeurbanne CEDEX > Tél : 04.78.93.08.80 > > ######################################################################## > Use REPLY-ALL to reply to list > > To unsubscribe from the XROOTD-L list, click the following link: > https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1 > > ######################################################################## > Use REPLY-ALL to reply to list > > To unsubscribe from the XROOTD-L list, click the following link: > https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1 > ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-L list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1