@alrossi, @paulmillar & @snafus : we have seen similar problem with TPC transfers from Castor to EOS a while ago (~2 years or so), this is a bug in the rados striper (that is used by the xrootd Ceph plug-in). For some chunk sizes it will happily serve garbage data for offsets past the end of file. I was able to reproduce this with following code snipped executed against castor+ceph: ``` File file; XRootDStatus st = file.Open( "root://host//path/to/file", OpenFlags::Read ); if( !st.IsOK() ) { std::cout << st.ToString() << std::endl; return 1; } char buffer[1048576]; uint64_t offset = 0; uint32_t size = 1048576; uint32_t bytesRead = 0; do { st = file.Read( offset, size, buffer, bytesRead ); if( !st.IsOK() ) { std::cout << st.ToString() << std::endl; return 1; } std::cout << "Read " << bytesRead << " bytes!" << std::endl; std::cout << std::string( buffer, bytesRead ) << std::endl; offset += bytesRead; } while( bytesRead > 0 ); ``` Note: if one uses a small buffer size like 1024 bytes it works correctly, however if you go for something bigger (like 1048576) it goes bananas ;-) `xrdcp` works correctly because it stats the source file ahead of doing the copy and then only reads number of bytes equal to the file size. I never had time to file a bug report with Ceph and actually I'm not sure if anyone is maintaining the rados striper anymore. -- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/xrootd/xrootd/issues/1454#issuecomment-895314428 ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-DEV list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1