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
74 KiB
74 KiB