swift/etc
Samuel Merritt 1901719542 Move all SLO functionality to middleware
This way, with zero additional effort, SLO will support enhancements
to object storage and retrieval, such as:
 * automatic resume of GETs on broken connection (today)
 * storage policies (in the near future)
 * erasure-coded object segments (in the far future)

This also lets SLOs work with other sorts of hypothetical third-party
middleware, for example object compression or encryption.

Getting COPY to work here is sort of a hack; the proxy's object
controller now checks for "swift.copy_response_hook" in the request's
environment and feeds the GET response (the source of the new object's
data) through it. This lets a COPY of a SLO manifest actually combine
the segments instead of merely copying the manifest document.

Updated ObjectController to expect a response's app_iter to be an
iterable, not just an iterator. (PEP 333 says "When called by the
server, the application object must return an iterable yielding zero
or more strings." ObjectController was just being too strict.) This
way, SLO can re-use the same response-generation logic for GET and
COPY requests.

Added a (sort of hokey) mechanism to allow middlewares to close
incompletely-consumed app iterators without triggering a warning. SLO
does this when it realizes it's performed a ranged GET on a manifest;
it closes the iterable, removes the range, and retries the
request. Without this change, the proxy logs would get 'Client
disconnected on read' in them.

DocImpact

blueprint multi-ring-large-objects

Change-Id: Ic11662eb5c7176fbf422a6fc87a569928d6f85a1
2014-01-13 10:52:29 -08:00
..
account-server.conf-sample Merge "Set default wsgi workers to cpu_count" 2013-07-30 19:12:28 +00:00
container-server.conf-sample Merge "Set default wsgi workers to cpu_count" 2013-07-30 19:12:28 +00:00
dispersion.conf-sample improve docs in etc/dispersion.conf-sample 2013-10-28 17:41:09 +08:00
drive-audit.conf-sample Configuration options for error regex and log file in the config now 2013-07-23 07:24:29 -05:00
memcache.conf-sample Fix for memcache middleware configuration 2013-11-26 18:03:33 +00:00
mime.types-sample PEP 8 compliance and small modification to mime.types file 2010-11-23 19:26:02 -06:00
object-expirer.conf-sample Merge "Add parallelism to object expirer daemon." 2013-06-11 22:48:24 +00:00
object-server.conf-sample Per device replication_lock 2013-11-22 21:40:29 +00:00
proxy-server.conf-sample Move all SLO functionality to middleware 2014-01-13 10:52:29 -08:00
rsyncd.conf-sample Added missing lockfile configuration to sample rsync.conf 2011-02-12 18:27:59 -08:00
swift-rsyslog.conf-sample Add sample rsyslog.conf. 2013-06-25 10:24:26 +08:00
swift.conf-sample Add max_header_size to swift.conf-sample and relative UT 2013-06-19 23:45:38 +08:00