Fixes: AZ419 RW is still an option, but it is only checked in the case that R or W is not specified.
bz://1095: result non-determinstic with allow_mult=false and siblings have same timestamp
When two contents have the same timestamp, resolve as follows: 1. If one is marked as deleted, chose the non-deleted content. 2. Otherwise, resolve by opaque comparison of content data.
This patch provides the same functionality as Kresten's did but its optional (although always enabled for the REST API). The local client and PB clients must use the 'deletedvclock' option to enable it.
Ensure timestamp passed to riak_object:syntactic_merge on read repair.
Break out put logic into separate file for reuse.
Break out core get FSM logic
Also added missing details option to put fsm EQC test.
…to prevent the termination of all active MapReduce jobs if a single MapReduce job times out or terminates unexpectedly. Fixes: AZ340 Handle the case of an error tuple being returned from the calls to riak_kv_mapper_sup:new_mapper in riak_kv_map_master so that a timeout does not cause riak_kv_map_master to terminate and take all active MapReduce jobs with it. Change riak_kv_map_master so that it does not monitor mapper processes and instead trap exits and rely on the link to the mapper proesses to detect when the mapper process terminates.
Preparing to move get logic out to separate module for reuse by other portions of the system. Found an edge case bug with deletes in the process. Deletes were being issued when the merged object was deleted and all vnodes were primaries. Deletes should only be issued once all vnodes have a tombstone with the same vclock. Delivery of delete messages is not guaranteed so if a vnode was storing stale data and the delete message was not executed (for example, node out of disk space) then the object would be resurrected next access.