Feature #13412
openMulti-range get requests support
0%
Description
A common functionality in ROOT framework at CERN is to do multi-range get requests. When testing the Huawei cloud storage, Ceph and Amazon, I could see that only Huawei was able to manage this kind of get requests. In order to do the analysis on physics files with ROOT is mandatory to provide this functionality.
Ceph only return the data to the first range.
Here you have an example:
$ davix-http -H "Range:bytes=0-100,300-400" http://seppo-ceph-test-1.cs3.cern.ch/NTUP_SMWZ.00990029._000055.CERN-PROD.root.1 --trace headers --debug
DAVIX: ssl: Initialized OpenSSL thread-safety callbacks for 41 locks.
DAVIX(core): HTTP/SSL Session caching ENABLED
DAVIX: Redirection Session caching ENABLED
DAVIX: libdavix path /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/davix/0.4.0-x86_64-slc6/lib64/libdavix.so.0
DAVIX: NEONRequest : add request content of size 0
DAVIX: creating session keys... httpseppo-ceph-test-1.cs3.cern.ch
DAVIX: no cached ne_session, create a new one
HTTP session to http://seppo-ceph-test-1.cs3.cern.ch:80 begins.
DAVIX: configure session...
DAVIX: define connection timeout to 30
DAVIX: enable login/password authentication
DAVIX: enable client cert authentication by callback
DAVIX: ah_create, for WWW-Authenticate
DAVIX: -> negotiateRequest
DAVIX: NEON start internal request
DAVIX: Running pre_send hooks
GET /NTUP_SMWZ.00990029._000055.CERN-PROD.root.1 HTTP/1.1
User-Agent: libdavix/0.4.0 neon/0.0.29
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Host: seppo-ceph-test-1.cs3.cern.ch
Range: bytes=0-100,300-400
DAVIX: Sending request-line and headers:
DAVIX: Doing DNS lookup on seppo-ceph-test-1.cs3.cern.ch...
DAVIX: Request sent; retry is 0.
< HTTP/1.1 206 Partial Content
< Content-Range: bytes 0-100/3641347518
< Content-Length: 101
< Accept-Ranges: bytes
< Last-Modified: Thu, 05 Mar 2015 16:28:30 GMT
< ETag: "11821fa7f313c0e65078d34633557f1a"
< Content-type: application/octet-stream
<
DAVIX: End of headers.
DAVIX: Running post_headers hooks
DAVIX: <- negotiateRequest
DAVIX: Reading 101 bytes of response body.
DAVIX: Got 101 bytes.
DAVIX: Read block (101 bytes):
[root]
DAVIX: NEONRequest::readBlock read 101 bytes
rootMd?
???&4c(9
w?Az\:,W?5?
??DAVIX: NEONRequest::readBlock read 0 bytes
DAVIX: Running post_send hooks
DAVIX: ah_post_send (#0), code is 206 (want 401), WWW-Authenticate is (none)
Updated by Nathan Cutler over 8 years ago
- Tracker changed from Bug to Feature
- Project changed from Ceph to rgw