swift/etc
Tim Burke f850ff065e SLO: Concurrently HEAD segments
Before creating a static large object, we must verify that all of the
referenced segments exist. Previously, this was done sequentially; due
to latency between proxy and object nodes, clients must be careful to
either keep their segment count low or use very long (minute+) timeouts.
We mitigate this somewhat by enforcing a hard limit on segment count,
but even then, HEADing a thousand segments (the default limit) with an
average latency of (say) 100ms will require more than a minute and a
half.

Further, the nested-SLO approach requires multiple requests from the
client -- as a result, Swift3 is in the position of enforcing a lower
limit than S3's 10,000 (which will break some clients) or requiring that
clients have timeouts on the order of 15-20 minutes (!).

Now, we'll perform the segment HEADs in parallel, with a concurrency
factor set by the operator. This is very similar to (and builds upon)
the parallel-bulk-delete work. By default, two HEAD requests will be
allowed at a time.

As a side-effect, we'll also only ever HEAD a path once per manifest.
Previously, if a manifest alternated between two paths repeatedly (for
instance, because the user wanted to splice together various ranges from
two sub-SLOs), then each entry in the manifest would trigger a fresh
HEAD request.

Upgrade Consideration
=====================
If operators would like to preserve the prior (single-threaded) SLO
creation behavior, they must add the following line to their
[filter:slo] proxy config section:

   concurrency = 1

This may be done prior to upgrading Swift.

UpgradeImpact
Closes-Bug: #1637133
Related-Change: I128374d74a4cef7a479b221fd15eec785cc4694a
Change-Id: I567949567ecdbd94fa06d1dd5d3cdab0d97207b6
2016-11-16 12:12:06 -08:00
..
account-server.conf-sample Fixed rysnc -> rsync typo 2016-10-19 20:17:00 +02:00
container-reconciler.conf-sample Change schedule priority of daemon/server in config 2016-08-10 23:56:15 +02:00
container-server.conf-sample Fixed rysnc -> rsync typo 2016-10-19 20:17:00 +02:00
container-sync-realms.conf-sample Removing some redundant words 2016-03-25 17:20:24 +07:00
dispersion.conf-sample Fix swift-dispersion in multi-region setups 2016-06-01 15:35:47 +02:00
drive-audit.conf-sample Set owner of drive-audit recon cache to swift user 2016-10-19 17:16:42 +00:00
internal-client.conf-sample Removed default value for log_statsd_host 2016-02-10 10:36:59 -06:00
memcache.conf-sample fixups for ipv6 memcache_servers docs 2016-01-12 21:08:58 -08: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 Documantation enhancements of nice/ionice feature 2016-08-19 07:39:49 +02:00
object-server.conf-sample Fixed rysnc -> rsync typo 2016-10-19 20:17:00 +02:00
proxy-server.conf-sample SLO: Concurrently HEAD segments 2016-11-16 12:12:06 -08:00
rsyncd.conf-sample Allows to configure the rsync modules where the replicators will send data 2015-09-07 08:00:18 +02:00
swift-rsyslog.conf-sample Add sample rsyslog.conf. 2013-06-25 10:24:26 +08:00
swift.conf-sample Enable object body and metadata encryption 2016-06-30 23:31:15 -07:00