Re: RadosGW S3 range on a 0 byte object gives 416 Range Not Satisfiable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Yup, completely agree. I find the 416 also a bit surprising, whether in Ceph/RGW or plain HTTP.
But I guess it’s just consistent with specifying a range of 1-100 on a one-byte object or any range that can’t be satisfied.
After all, the range is part of the request and 4xx means “something wrong with your request”.

Just to make sure: I am not at all involved in Ceph development, so don’t send a feature request to me :)

Ciao, Uli

> On 22. 03 2022, at 09:23, Kai Stian Olstad <ceph+list@xxxxxxxxxx> wrote:
> 
> On 21.03.2022 15:35, Ulrich Klein wrote:
>> RFC 7233
>> 4.4 <https://datatracker.ietf.org/doc/html/rfc7233#section-4.4>.  416
>> Range Not Satisfiable
>>   The 416 (Range Not Satisfiable) status code indicates that none of
>>   the ranges in the request's Range header field (Section 3.1
>> <https://datatracker.ietf.org/doc/html/rfc7233#section-3.1>) overlap
> 
> The section 3.1 say "A server MAY ignore the Range header field."
> 
> 
>>   For example:
>>     HTTP/1.1 416 Range Not Satisfiable
>>     Date: Fri, 20 Jan 2012 15:41:54 GMT
>>     Content-Range: bytes */47022
>>      Note: Because servers are free to ignore Range, many
>>      implementations will simply respond with the entire selected
>>      representation in a 200 (OK) response.  That is partly because
> 
> This is what Nginx and Apache do, if you specify range when the file has 0 bytes they will return 200.
> So they are ignore range with 0 bytes files but not when the bytes is grater than 0.
> 
> 
>>> On 21. 03 2022, at 15:11, Ulrich Klein <ulrich.klein@xxxxxxxxxxxxxx> wrote:
>>> With a bit of HTTP background I’d say:
>>> bytes=0-1000000 means: First byte to to 1000000nd byte. First byte is byte #0
>>> On an empty object there is no first byte, i.e. not satisfiable ==> 416
>>> Should be the same as on a single byte object and
>>> bytes=1-1000000
>>> 200 OK should only be correct, if the server or a proxy in between doesn’t support range requests.
> 
> After reading your text and links I do concur that returning 416 with 0 bytes with range bytes=0-1000000 is not wrong,
> but I also believe that it would be correct to return 200 OK as Nginx and Apache do, since range can be ignored.
> 
> I think our user of Ceph is used to how Nginx and Apache works and that is the reason they wondered if it was something wrong with Ceph.
> 
> So I think the answer to them will be, It's according to spec but you can always put in a feature request.
> 
> 
> -- 
> Kai Stian Olstad

_______________________________________________
ceph-users mailing list -- ceph-users@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux