swift/doc/source/api
Tim Burke c7283be4fe Add "history" mode to versioned_writes middleware
This change introduces the concept of a "versioning mode" for
versioned_writes. The following modes are supported:

 * stack

    When deleting, check whether any previous versions exist in the
    versions container. If none is found, the object is deleted. If the
    most-recent version in the versions container is not a delete
    marker, it is copied into the versioned container (overwriting the
    current version if one exists) and then deleted from the versions
    container. This preserves the previous behavior.

    If the most-recent version in the versions container is a delete
    marker and a current version exists in the versioned container, the
    current version is deleted. If the most-recent version in the
    versions container is a delete marker and no current version exists
    in the versioned container, we copy the next-most-recent version
    from the versions container into the versioned container (assuming
    it exists and is not a delete marker) and delete both the
    most-recent version (i.e., the delete marker) and the just-copied
    next-most-recent version from the versions container.

    With this mode, DELETEs to versioned containers "undo" operations
    on containers. Previously this was limited to undoing PUTs, but now
    it will also undo DELETEs performed while in "history" mode.

 * history

    When deleting, check whether a current version exists in the
    versioned container. If one is found, it is copied to the versions
    container. Then an empty "delete marker" object is also put into the
    versions container; this records when the object was deleted.
    Finally, the original current version is deleted from the versioned
    container. As a result, subsequent GETs or HEADs will return a 404,
    and container listings for the versioned container do not include
    the object.

    With this mode, DELETEs to versioned containers behave like DELETEs
    to other containers, but with a history of what has happened.

Clients may specify (via a new X-Versions-Mode header) which mode a
container should use. By default, the existing "stack" mode is used.

Upgrade consideration:
======================

Clients should not use the "history" mode until all proxies in the
cluster have been upgraded. Attempting to use the "history" mode during
a rolling upgrade may result in some requests being served by proxies
running old code (which necessarily uses the "stack" mode), leading to
data loss.

Change-Id: I555dc17fefd0aa9ade681aa156da24e018ebe74b
2016-08-15 21:04:29 -07:00
..
authentication.rst Add multiple reseller prefixes and composite tokens 2015-02-23 15:57:20 +00:00
container_quotas.rst Adds v1 API documentation to doc/source/api 2014-11-17 16:19:07 -06:00
discoverability.rst Adds v1 API documentation to doc/source/api 2014-11-17 16:19:07 -06:00
form_post_middleware.rst updated some weird whitespace character to a normal one 2016-02-24 09:48:57 -08:00
large_objects.rst updated some weird whitespace character to a normal one 2016-02-24 09:48:57 -08:00
object_api_v1_overview.rst [docs] Update Administrator Guide URL 2016-04-01 23:38:49 +09:00
object_versioning.rst Add "history" mode to versioned_writes middleware 2016-08-15 21:04:29 -07:00
temporary_url_middleware.rst Added quotes to example echo in swift-temp-url 2016-07-26 13:47:24 +00:00
use_content-encoding_metadata.rst updated some weird whitespace character to a normal one 2016-02-24 09:48:57 -08:00
use_the_content-disposition_metadata.rst Adds v1 API documentation to doc/source/api 2014-11-17 16:19:07 -06:00