US 11,853,321 B1
Data replication without in-place tombstones
Ranjeesh Kumar, Seattle, WA (US); Mohamed Emad El Din Fathalla, Carnation, WA (US); and John Salomone, Seattle, WA (US)
Assigned to Amazon Technologies, Inc., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Jun. 14, 2018, as Appl. No. 16/008,940.
Int. Cl. G06F 16/27 (2019.01); G06F 3/06 (2006.01); G06F 16/2455 (2019.01)
CPC G06F 16/273 (2019.01) [G06F 3/065 (2013.01); G06F 16/24568 (2019.01); G06F 2201/82 (2013.01)] 24 Claims
OG exemplary drawing
 
1. A system, comprising:
one or more computers at a first location implementing an event sender, configured with computer executable instructions to:
receive a stream of update events from a source data store, wherein the update events are in an order;
for individual update events:
read from an item version object on persistent storage a logical clock value for a data item updated by the update event;
update the item version object to increment the logical clock value to a next logical clock value; and
send the update event with the next logical clock value over a communication channel that does not guarantee that the update events will be delivered in the order of the stream; and
one or more computers at a second location implementing a plurality of replicator nodes executing concurrently and configured with computer executable instructions to apply the update events from the communication channel to a destination data store, individual ones of the replicator nodes configured to:
for a particular update event of a particular data item:
responsive to a determination that (a) the data item does not exist in a destination object and (b) a particular logical clock value of the update event is newer than another logical clock value of the data item in a tombstone object stored on persistent storage separate from the destination object:
update the tombstone object:
 to indicate the particular logical clock value for the data item, and
 to set a barrier attribute in the tombstone object that indicates to other ones of the replicator nodes to not perform delete events for the data item on the destination object;
add the data item to the destination object while the barrier attribute in the tombstone object is set; and
clear the barrier attribute in the tombstone object after the data item has been added to the destination object.