swift/test/unit/container
Samuel Merritt 6ff644b945 Allow for multiple X-(Account|Container)-* headers.
When the number of account/container or container/object replicas are
different, Swift had a few misbehaviors. This commit fixes them.

* On an object PUT/POST/DELETE, if there were 3 object replicas and
  only 2 container replicas, then only 2 requests would be made to
  object servers. Now, 3 requests will be made, but the third won't
  have any X-Container-* headers in it.

* On an object PUT/POST/DELETE, if there were 3 object replicas and 4
  container replicas, then only 3/4 container servers would receive
  immediate updates; the fourth would be ignored. Now one of the
  object servers will receive multiple (comma-separated) values in the
  X-Container-* headers and it will attempt to contact both of them.

  One side effect is that multiple async_pendings may be written for
  updates to the same object. They'll have differing timestamps,
  though, so all but the newest will be deleted unread. To trigger
  this behavior, you have to have more container replicas than object
  replicas, 2 or more of the container servers must be down, and the
  headers sent to one object server must reference 2 or more down
  container servers; it's unlikely enough and the consequences are so
  minor that it didn't seem worth fixing.

The situation with account/containers is analogous, only without the
async_pendings.

Change-Id: I98bc2de93fb6b2346d6de1d764213d7563653e8d
2013-01-14 12:38:46 -08:00
..
__init__.py Initial commit of Swift code 2010-07-12 17:03:45 -05:00
test_auditor.py updated copyright date for all files 2012-03-19 13:45:34 -05:00
test_replicator.py Fixed bug with container reclaim/report race 2012-06-03 03:23:51 +00:00
test_server.py Allow for multiple X-(Account|Container)-* headers. 2013-01-14 12:38:46 -08:00
test_sync.py Fix for container sync not syncing last rowid 2012-11-19 23:09:17 +00:00
test_updater.py updated copyright date for all files 2012-03-19 13:45:34 -05:00