An object node should reject a PUT with 409 when the timestamp is less
than or equal to the timestamp of an existing version of the object.
However, if the PUT is part of an SSYNC, and the fragment archive has a
different index than the one on disk we may store it.
We should store it we're the primary holder for that fragment index.
Back before the related change we used to revert fragments to handoffs
and it caused a lot of problems. Mainly multiple frag indexes piling up
on one handoff node. Eventually we settled on handoffs only reverting
to primaries but there was some crufty flailing left over.
When EC frag duplication (multi-region EC) came in we also added a new
complexity because a node's primary index (the index in part_nodes list)
was no longer universially equal to the EC frag index (the storage
policy backend end index). There was a few places we assumed
node_index == frag_index, some of which caused bugs which we've fixed.
This change tries to clean all that up.
Related-Change-Id: Ie351d8342fc8e589b143f981e95ce74e70e52784
Change-Id: I3c5935e2d5f1cd140cf52df779596ebd6442686c