Project

General

Profile

Feature #13412

Multi-range get requests support

Added by Maria Arsuaga Rios over 8 years ago. Updated over 8 years ago.

Status:
New
Priority:
High
Assignee:
-
Target version:
-
% Done:

0%

Source:
other
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

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)

History

#1 Updated by Nathan Cutler over 8 years ago

  • Tracker changed from Bug to Feature
  • Project changed from Ceph to rgw

Also available in: Atom PDF