6b8f966364d917e61f5011090b28ae7456b76e71
Commit Graph

2205 Commits

This Branch
This Branch
All Branches
Author SHA1 Message Date
Jenkins
6b8f966364 Merge "Better TempAuth storage URL guessing" 2012年11月14日 21:10:18 +00:00
Alex Yang
1701b6bc24 fix bug in deleting account memcache.
Every request of container and object will invoke account_info() or
container_info() to query the meta of account and container. The meta
will be cached in memcache with the key 'account/{$account}' or
'container/{$container}', So, if any request to update account and
container, we should delete the cache. But in the cache deletion of
account, it use the wrong key 'account/v1/{$account}'. This could lead
to inconsistency of account meta.
Change-Id: Ied116a58a2d5866ac76d75ae50f21277d66e5755
2012年11月14日 14:10:00 +08:00
clayg
4236e6379b patch utils.HASH_PATH_SUFFIX in proxy unittests
Most of the test files set the HASH_PATH_SUFFIX so you can run the test
file stand alone. This change made it easier for me to run specific
proxy tests separately.
Change-Id: I87d70367dac7f240a2b6779649f8a02cf324ae0f
2012年11月12日 23:15:10 -08:00
Yee
53ab2e150d fix bug1039861, remove license header in doc/source/conf.py.
Change-Id: Iab43ac342faf3722ccab1ed034f08752dbbfaae1
2012年11月11日 00:15:39 -08:00
gholt
47ee1d7e17 Better TempAuth storage URL guessing
I know it's just TempAuth, but bug #959953 just caught my eye as
something interesting to solve.
This does a best guess on the storage URL to return for a given
request. It allows $HOST to be used in the storage URL configuration,
where $HOST will resolve to scheme://host:port. It bases the scheme
on how the server is running or on storage_url_scheme if set. The
host:port comes from the request's Host header if it exists, and
falls back to the WSGI SERVER_NAME:SERVER_PORT otherwise.
Fixes: bug #959953
DocImpact
Change-Id: Ia494bcb99a04490911ee8d2cb8b12a94e77820c5
2012年11月10日 16:39:25 +00:00
Jenkins
217bd202dd Merge "fix error with setting max age and incorrect tests" 2012年11月09日 23:36:41 +00:00
John Dickinson
8a8ea8f22a fix error with setting max age and incorrect tests
Change-Id: I3f0db3b70ea5df323597b556682c2d1fb28afe53
2012年11月09日 14:45:12 -08:00
Jenkins
b8136667e8 Merge "Make swift-bench use less memory with large object sizes." 2012年11月09日 21:33:32 +00:00
Jenkins
ee42e6fc72 Merge "Make DELETE requests to expired objects return 404." 2012年11月09日 20:17:15 +00:00
Samuel Merritt
24f9fe919e Make swift-bench use less memory with large object sizes.
Before, swift-bench would create a string of the right size and pass
that to [direct_]put_object. Uploading 5 GB objects w/concurrency of
4? Hope you've got a spare 20 GB of RAM in that machine.
Now it lazily generates chunks (of size 64 KiB) to send. In my limited
testing, this keeps RAM usage low while not impacting speed.
There's backwards-compatibility code in
direct_client.direct_put_object for any callers who are still passing
in strings. There aren't any such in Swift's codebase, though. All one
of those callers now pass an iterable.
Fixes bug 911925.
Change-Id: I40669fc00c7fb6699d8fb514e1be9b69436eca42
2012年11月09日 11:10:00 -08:00
Michael Barton
34ca0f097c give swob default content-type
This should fix up the few remaining API regressions from swob, by giving all
responses a default content-type of "text/html; charset=UTF-8".
Change-Id: Ib3b859e63c5e8c4af6f7fe535947402b5df57399
2012年11月09日 10:44:26 -08:00
Jenkins
2194897e37 Merge "use Host: for location rewrites" 2012年11月09日 00:09:33 +00:00
Samuel Merritt
237a440cd1 Make DELETE requests to expired objects return 404.
It is already the case that a DELETE of a deleted object results in a
404, and GET/HEAD/POSTs to both expired and deleted objects result in
404s. However, a DELETE of an expired object resulted in a 202. This
change makes it consistent with the other verbs.
Fixes bug 1076245.
Change-Id: I793e62d72461a4fb9fb3404e10658ddcc4c3a7a6
2012年11月08日 15:27:24 -08:00
Michael Barton
65554ea32f charset for default responses
Set a utf-8 charset on default text/html responses.
Change-Id: Ic5f661bd475dca83763d4b55419ad031279e3ba1
2012年11月08日 15:23:04 -08:00
Michael Barton
188f834e0a use Host: for location rewrites
If the Host header is available, use it for making relative URLs absolute.
Otherwise, continue using SERVER_NAME.
Change-Id: Ifc028264ad1b122a2d5dff9d5528cb369090429f
2012年11月08日 15:16:19 -08:00
Jenkins
0ab0c813c0 Merge "Use computed size on object PUT, not fstat." 2012年11月08日 16:59:05 +00:00
Jenkins
0c7b0109bb Merge "Fixed bugs with internal client and object expirer" 2012年11月08日 16:58:48 +00:00
Joe Arnold
5e4ca30281 Fixed swift-bench when using -b and a conf file
Change-Id: I72448cd8578b53a658f151354a26066772e4b9ec
2012年11月07日 16:12:04 -08:00
gholt
f46a4d8a2f Fixed bugs with internal client and object expirer
These bug fixes are lumped together because they all caused problems
with the object expirer doing its job.
There was a bug with the internal client doing listings that happened
to run across a Unicode object name for use as a marker.
There was a bug with the object expirer not utf8 encoding object
names it got from json listings, causing deletes to fail.
There was a bug with the object expirer url quoting object names when
calling the internal client's make_request, when make_request already
handles that.
Change-Id: I29fdd351fd60c8e63874b44d604c5fdff35169d4
2012年11月08日 00:05:35 +00:00
Samuel Merritt
d61dfb32e7 Use computed size on object PUT, not fstat.
The object server knows the size of the file on disk already since
it's counted the bytes as they were written out. There's no need to go
ask the filesystem.
This also lets object PUTs work when the filesystem is some crazy,
non-POSIX thing that doesn't always give the right answers from
fstat(). See bug 904723 for a case when this happened.
Fixes bug 904723.
Change-Id: Ibdf44ea991e0cc4f9e0997cc9ff566cb0eac5332
2012年11月07日 13:36:35 -08:00
John Dickinson
a69bc08990 1.7.6 version bump
Change-Id: Ifc29d286a3e435fd16c1dec8b5afb7b331a89b77
2012年11月06日 19:38:26 -08:00
John Dickinson
d09bcdef73 updated for 1.7.5 release
Change-Id: Iee286fbe1a6b797955579bedfb2a80095c055cd8
2012年11月06日 18:42:07 -08:00
Jenkins
3af76e1096 Merge "statsd timing refactor" 2012年11月07日 01:27:56 +00:00
Michael Barton
3586f829b0 statsd timing refactor
Change-Id: I99d9ddfbcad0f88e75c49235c8317ea97237d4e4
2012年11月06日 15:39:25 -08:00
John Dickinson
ec75d1e343 add OPTIONS to proxy_logging configs and docs
Change-Id: I77e1d7fdcf217826402beeb7d583e3c7279c416c
2012年11月06日 15:13:01 -08:00
Jenkins
d64649d9e7 Merge "Better RFC support for OPTIONS and CORS preflight requests" 2012年11月06日 20:44:44 +00:00
John Dickinson
16ecc430ca Better RFC support for OPTIONS and CORS preflight requests
Ensures that the Allow header is set for 405 responses from the proxy,
as per RFC 2616.
CORS preflight requests now require both the Origin and Access-
Control-Request-Method headers to get a successful (200) response. The
draft spec defines errors as a response with a non-200 status code.
This patch sets the CORS error response code to 401 (Not Authorized).
A later patch may choose to make this configurable.
There is some ambiguity between RFC 2616 and the CORS draft spec
around what to do when a CORS request is made but the cluster has no
CORS information about the requested resource. This patch chooses to
return an error in this case because it is what would be simplest for
CORS client apps.
Further improvements to the OPTIONS verb not included in this patch
 include support of more top-level resources (eg / or /v1/) or
sending the configured constraints in the reponse body.
Change-Id: I40be059e8bbf3737dafc4e6fefa7598d05669c60
2012年11月05日 20:15:21 -08:00
Jenkins
f66248b973 Merge "Set content-type on account/container head" 2012年11月06日 02:07:07 +00:00
Michael Barton
0d1b42007b Set content-type on account/container head
Change-Id: Ib54fa5adb7539bebfbd6644064be9d7f4d7af9db
2012年11月05日 12:59:16 -08:00
Jenkins
fb183e9b4a Merge "Split swob.content_range_header() into two methods." 2012年11月05日 19:32:28 +00:00
Clark Boylan
a4da977e6c Use pypi for python-swiftclient dependency.
Using github as a package source is less reliable in the Jenkins test
framework than using pypi. This is because the Jenkins test framework
has a local pypi mirror.
Change-Id: Ia904d39ce70f5c2bd7d6edb9172f8226131074e2
2012年11月02日 16:56:18 -07:00
Jenkins
8f0a1aa1a5 Merge "Remove dead code in swob.Response.__init__." 2012年11月02日 22:51:38 +00:00
Samuel Merritt
466e0a0d5a Split swob.content_range_header() into two methods.
content_range_header() took an optional parameter 'value_only'. If
true, it returned just the header value; if false, the whole header.
At all the call sites, value_only was either a hardcoded True or
False.
Instead, let's have two methods (one for the full header, one for the
header value) and just call the right one.
Change-Id: I3aa03aca233437e9bdbed7edf9622756e19b4c49
2012年11月02日 15:39:59 -07:00
Jenkins
e655cd89c3 Merge "re-use headers_to_container_info on container GET" 2012年11月02日 20:21:55 +00:00
Samuel Merritt
cda914d740 Remove dead code in swob.Response.__init__.
self.status would have been "200 OK", not 200, so the branch was never
taken. self.status_int would have been 200.
This looked like part of an attempt to honor the Range header in GET
requests. However, when I changed the code to check if self.status_int
== 200, the behavior gets weird. In the case of a GET request w/Range
header, the status gets changed from a 200 (from the underlying
app/middleware stack) into a 206. However, the response body isn't
actually changed to be of the right length. The net result is a
response w/status "206 Partial Content" that actually contains the
full content.
RFC 2616 section 14.35.2 says "A server MAY ignore the Range header."
The right thing to do is either (a) return a 206 with actual partial
content, or (b) ignore the Range header. For object GETs, there's
already code to do (a) [see commit ce274b3]. For other GETs, we should
ignore the Range header instead of returning a Frankenresponse.
This code is dead, and rightly so; let's bury it six feet deep in the
bit bucket.
Fixes bug 1068279.
Change-Id: Id648dfda9cba45012b5da097a235598fbd97c8b0
2012年11月02日 13:19:39 -07:00
Jenkins
94d295e409 Merge "Allow object-expirer to delete the last version of an object" 2012年11月02日 19:37:58 +00:00
Jenkins
452469592a Merge "Make multipart/byteranges boundary always length 32." 2012年11月02日 19:37:36 +00:00
Jenkins
13941cb8eb Merge "dispersion report option to output missing parts" 2012年11月02日 19:35:38 +00:00
yuan-zhou
ba3babadde Allow object-expirer to delete the last version of an object
Fix bug 1067677
When we delete a versioned object, the last version will be poped out from the
versiones container. When a versioned object is expired and deleted by object-
expirer, the last version is restored but remains in the versions container
instead of getting deleted. The reason is object-expirer will set
'X-If-Delete- At' header when deleteing an object. However this is for the
current version - not for the last version. When the object-server is trying
to delete the last version, the transaction will fail with error:
X-If-Delete-At and X-Delete-At do not match. Delete the 'X-If-Delete-At'
field in the later built delete request would help to solve this issue.
This patch, without the test, was first proposed by
Zhou Yuan <yuan.zhou@intel.com>.
Change-Id: I62c97e6a0f140888497e189129825865fb6f7966
2012年11月02日 11:49:33 -07:00
Jenkins
7af535cb2c Merge "Separate wsgi init from web-front-end activation" 2012年11月02日 18:26:40 +00:00
Samuel Merritt
f955e66a02 Make multipart/byteranges boundary always length 32.
Due to a lack of zero-padding in a format string, there was a 1/16
chance that the length of the randomly-generated boundary string was
less than 32. This didn't affect client downloads, but it did give the
unit tests a 1/16 chance of failing (there's a [0-9a-f]{32} regex in a
test).
Now we left-zero-pad the boundary string to length 32, and the test
consistently passes.
Change-Id: I4ee98dab127e5674e59b078d8090470ec783e0b0
2012年11月02日 11:21:24 -07:00
Jenkins
8a061c086a Merge "blueprint Multi-range support implementation" 2012年11月02日 18:16:28 +00:00
David Hadas
9efa9be167 Separate wsgi init from web-front-end activation
Separate the request processor initialization steps
 Load common settings from conf
 Set the logger
 Load the request processor
from the web front end server application step
On branch bp/wsgi-application-interface-7
 modified: swift/common/wsgi.py
Implements Blueprint: wsgi-application-interface
Change-Id: I25fabad8846cd644e4bf1e1bd9c2e568512e12e5
2012年11月02日 10:48:57 -07:00
Jenkins
d70d3092c0 Merge "Handle down object servers in container-sync" 2012年11月02日 05:44:45 +00:00
Michael Barton
af031138be re-use headers_to_container_info on container GET
Currently, a container's info can be cached without cors data intact after
a container GET.
I made headers_to_container_info a function instead of a method and I crammed
all container metadata into container_info.
This is so e.g. staticweb can eventually re-use the same container info cache.
Fix pep8 in swift/proxy/controllers/container.py
Change-Id: I4bbb042dde79afac48395efc38bd80f0ff240e1f
2012年11月01日 18:46:47 -07:00
litong01
ce274b3532 blueprint Multi-range support implementation
This change adds multi range retrieval to OpenStack Swift. For non-
segmented data object, a client can use HTTP Range header to specify
multiple ranges to retrieve sections of the data object.
This implementation currently does not support segmented data object
multi range retrieval. When a client sends a multi range request
against a segmented data object, Swift will return HTTP status code
200. Support for segmented data multi range retrieval will be added
in near future.
This implementation is to bring Swift closer to CDMI multi range
data retrieval standard. Once support for segemented data multi
range is added, Swift will be compliant with CDMI standard in
this area.
DocImpact
Change-Id: I4ed1fb0a0a93c037ddb2f551ea62afe447945107
2012年11月01日 20:45:30 -04:00
Donagh McCabe
00c3fde8f8 Handle down object servers in container-sync
If an object server is down, container-sync stops syncing the container
even if the it gets object copies from "up" obejct servers.
Bug 1069910
In case the git history gets mangled, this fix was done almost entirely
by Donagh McCabe <donagh.mccabe@hp.com>.
Change-Id: Ieeadcfeb4e880fe5f08e284d7c12492bf7a29460
2012年11月01日 16:45:35 -07:00
Jenkins
c7948ec5d9 Merge "changed TRUE_VALUES references to utils.config_true_value() call" 2012年10月31日 18:46:11 +00:00
gholt
dcc89e3ad6 dispersion report option to output missing parts
Adds a -p option to swift-dispersion-report that will output the
partitions missing copies to standard error. Another thing we've been
meaning to add for forever. It's useful when you want to do some
further research on whether a partition truly has fewer copies or if
they're just somewhere else in the cluster due to a ring change, for
instance.
DocImpact
Change-Id: I5e47aa5818483ecc34b39ef6f8cd83ad312ed9a0
2012年10月30日 17:40:42 +00:00
gholt
a94a283149 Fixed bugs re: make_pre_authed* and SCRIPT_NAME
There were bugs with SCRIPT_NAME and
swift.common.wsgi.make_pre_authed* functions.
1) SCRIPT_NAME wasn't copied with PATH_INFO, which it should've been.
2) When a new path was given, SCRIPT_NAME wasn't set to an empty
 string but just omitted, which is allowed by spec, but really
 should be set.
For completeness, if SCRIPT_NAME doesn't exist in the source env, it
will be created in the new env, but as an empty string.
Change-Id: Ifbc27ed8ff357038c54df4d37de46cfd5e31372e
2012年10月30日 15:54:05 +00:00