Gil Vernik created HADOOP-12079:
-----------------------------------

             Summary: 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
            Reporter: Gil Vernik
            Assignee: Gil Vernik
             Fix For: 3.0.0


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