swift/swift/common
Alistair Coles e91de49d68 Update container on fast-POST
This patch makes a number of changes to enable content-type
metadata to be updated when using the fast-POST mode of
operation, as proposed in the associated spec [1].

* the object server and diskfile are modified to allow
  content-type to be updated by a POST and the updated value
  to be stored in .meta files.

* the object server accepts PUTs and DELETEs with older
  timestamps than existing .meta files. This is to be
  consistent with replication that will leave a later .meta
  file in place when replicating a .data file.

* the diskfile interface is modified to provide accessor
  methods for the content-type and its timestamp.

* the naming of .meta files is modified to encode two
  timestamps when the .meta file contains a content-type value
  that was set prior to the latest metadata update; this
  enables consistency to be achieved when rsync is used for
  replication.

* ssync is modified to sync meta files when content-type
  differs between local and remote copies of objects.

* the object server issues container updates when handling
  POST requests, notifying the container server of the current
  immutable metadata (etag, size, hash, swift_bytes),
  content-type with their respective timestamps, and the
  mutable metadata timestamp.

* the container server maintains the most recently reported
  values for immutable metadata, content-type and mutable
  metadata, each with their respective timestamps, in a single
  db row.

* new probe tests verify that replication achieves eventual
  consistency of containers and objects after discrete updates
  to content-type and mutable metadata, and that container-sync
  sync's objects after fast-post updates.

[1] spec change-id: I60688efc3df692d3a39557114dca8c5490f7837e

Change-Id: Ia597cd460bb5fd40aa92e886e3e18a7542603d01
2016-03-03 14:25:10 +00:00
..
middleware Merge "fix formatting of bulk operations doc" 2016-02-24 03:30:49 +00:00
ring Always fix devices with multiple part-replica assignments 2016-02-01 16:19:08 -08:00
__init__.py Start using Hacking 2013-07-15 11:41:58 +02:00
base_storage_server.py Add server type in OPTIONS response 2015-01-30 00:25:28 +05:30
bufferedhttp.py py3: Replace urllib imports with six.moves.urllib 2015-10-08 15:24:13 +02:00
constraints.py py3: Replace basestring with six.string_types 2015-10-09 22:20:03 +02:00
container_sync_realms.py Use six to fix imports on Python 3 2015-07-24 11:48:28 +02:00
daemon.py Revert "Refactor common/utils methods to common/ondisk" 2013-10-07 17:18:09 -04:00
db.py remove remaining simplejson uses, prefer standard library import 2015-11-16 12:34:24 -08:00
db_replicator.py Fix AttributeError for LogAdapter 2015-12-26 13:17:00 +08:00
direct_client.py Merge "Fix inconsistent suffix hashes after ssync of tombstone" 2016-02-26 23:37:44 +00:00
exceptions.py minutæ: port ClientException tweaks from swiftclient; dict .pop 2015-10-08 16:39:35 -07:00
http.py Fix pep8 E265 warning of hacking 0.10 2015-07-30 09:33:18 +02:00
internal_client.py Replace exit() by sys.exit() 2016-02-01 19:21:26 +08:00
manager.py swift-init: New option kill-after-timeout 2016-01-05 11:34:03 +01:00
memcached.py Make _get_addr() method a function in utils. 2016-01-12 21:09:48 -08:00
request_helpers.py Fix proxy-server's support for chunked transferring in GET object 2016-03-02 22:56:13 +09:00
splice.py Replace reduce and unichr , these are no longer available in py3 2015-07-09 21:56:29 +05:30
storage_policy.py Trivial fix for sphinx warnings 2016-01-29 15:28:56 +00:00
swob.py Fix proxy-server's support for chunked transferring in GET object 2016-03-02 22:56:13 +09:00
utils.py Update container on fast-POST 2016-03-03 14:25:10 +00:00
wsgi.py Pass HTTP_REFERER down to subrequests 2015-12-17 14:28:40 +00:00