[ 
https://issues.apache.org/jira/browse/HADOOP-12079?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14581416#comment-14581416
 ] 

Gil Vernik commented on HADOOP-12079:
-------------------------------------

And another question: 
the unitest you asked to add - is the one that will write a small file and 
overwrite with large one. So for this type of operation X-Newest is good, if 
users write and overwrite and read files in a script - they need X-Newest. I am 
not sure what we really want to test here: some flow or use cases of Swift. The 
test requires X-Newest, but not the real use cases of Swift.
Swift is eventual consistent thing, it works like this... Users should be aware 
of it. There are benefits and drawbacks in Swift, but forcing Swift with 
X-Newest to overcome eventual consistency is not a good way, since it affects 
performance.
I can add test for some operation without X-Newest, but not sure that 
write-overwrite (small and large ) is what we should focus here, since it 
require X-Newest.

Please comment, so i will know how to proceed with it.
Thanks.

> Make 'X-Newest' header a configurable
> -------------------------------------
>
>                 Key: HADOOP-12079
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12079
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs/swift
>    Affects Versions: 3.0.0, 2.6.0
>            Reporter: Gil Vernik
>            Assignee: Gil Vernik
>             Fix For: 3.0.0, 2.6.1
>
>         Attachments: x-newest-optional0001.patch, 
> x-newest-optional0002.patch, x-newest-optional0003.patch
>
>
> Current code always sends X-Newest header to Swift. While it's true that 
> Swift is eventual consistent and X-Newest will always get the newest version 
> from Swift, in practice this header will make Swift response very slow. 
> This header should be configured as an optional, so that it will be possible 
> to access Swift without this header and get much better performance. 
> This patch doesn't modify current behavior. All is working as is, but there 
> is an option to provide fs.swift.service.useXNewest = false. 
> Some background on Swift and X-Newest: 
> When a GET or HEAD request is made to an object, the default behavior is to 
> get the data from one of the replicas (could be any of them). The downside to 
> this is that if there are older versions of the object (due to eventual 
> consistency) it is possible to get an older version of the object. The upside 
> is that the for the majority of use cases, this isn't an issue. For the small 
> subset of use cases that need to make sure that they get the latest version 
> of the object, they can set the "X-Newest" header to "True". If this is set, 
> the proxy server will check all replicas of the object and only return the 
> newest object. The downside to this is that the request can take longer, 
> since it has to contact all the replicas. It is also more expensive for the 
> backend, so only recommended when it is absolutely needed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to