Patent ID: 9098470
Filing Date: 2015-08-04
Classification: G06F

Abstract:
1. One or more computer storage media having computer-executable instructions embodied thereon that, when executed, cause a computing device to perform a method of replicating hierarchical data structures, the method comprising: receiving, at a secondary data store, a first message from a first primary data store; determining that said first message pertains to a data object having a designated parent data object in a hierarchy of data objects, said designated parent data object having a parent object identifier and a parent version identifier, said parent version identifier identifying a version of said designated parent object with respect to different versions of said designated parent object; determining, based on the parent version identifier, that a stored parent data object that corresponds to said parent object identifier and said parent version identifier of said designated parent data object is not present in the secondary data store; suspending further processing of said first message based on the determining that the stored parent data object is not in the secondary data store; receiving, at said secondary data store, a second message from a second primary data store; processing said second message, said processing creating the designated parent data object with the parent object identifier and the parent version identifier; after the creation of said designated parent data object, resuming the processing of the first message; identifying that the designated parent data object is a live parent data object based on determining that the designated parent data object is a most recent version of the parent data object such that all ancestors of the parent data object within its hierarchy are live; and garbage collecting a non-live parent data object in the secondary data store with the live parent data object based on the identifying, the non-live parent data object having the parent object identifier and a different parent version identifier than the designated parent data object.