basho/riak_cs — pull request #561 by andrewjstone (2013-05-08 19:15:20+00:00)
Title: Object deleted while updating behavior changes

When a manifest is deleted directly by a user and not overwritten to
enter the pending delete_state, it is marked as ```{deleted, true}```
inside #MANIFEST.props. When an uploading manifest completes, the
writing manifest will become the most recent active manifest.

When a user goes to read the key, the following occurs:
* If there is an existing manifest in the pending_delete or
scheduled_delete state with {deleted, true} in props, and the
delete_marked_time of that manifest is greater than the
write_start_time of the most recent active manifest, then not_found
is returned.
* If there is no existing manifest with {deleted, true} in props,
then the most recent active manifest is returned.
* If there is an existing manifest with {deleted, true} in props,
but the delete_marked_time is less than the write_start_time of
the most recent active manifest, then the most recent active
manifest is returned.

Do not show active manifests on read time if a delete occurred after writing started #533

fix riak_cs_manifest_utils:most_recent_active_manifest/2

gc active manifests that were in writing state when a deletion occured
and have since completed. #533

return a list of UUIDs not Manifests from riak_cs_manifest_utils:find_deleted_active_manifests/2

quickcheck property for the active manifest

add type specs and fix a bug in the active manifest handling found by quickcheck

fix spec with hint from dialyzer

fix dialyzer error

remove accidental .swp checkin

use a guard instead of case statement and shorten some clauses