Patent ID: 8762336

Claim:
One or more computer storage memories having computer-executable instructions embodied thereon that, when executed, cause a computing device to perform a method of ensuring consistency across a replicated data storage system, the method comprising: receiving, at a secondary data store, a message from a primary data store, said message comprising an identifier for a previous checkpoint, current checkpointing information, and an incremental difference checksum; creating a current local checkpoint in accordance with the current checkpointing information; using said previous checkpoint identifier to load a previous local checkpoint; obtaining an incremental difference set between said previous local checkpoint and said current local checkpoint; calculating a local incremental difference checksum over said incremental difference set; comparing said local incremental difference checksum to the received incremental difference checksum to determine if a discrepancy has been introduced between data stored at the primary data store and data stored at the secondary data store; and determining that said discrepancy exists based on said comparison by: calculating intermediate checkpointing information, said intermediate checkpointing information useable to create a local intermediate checkpoint, said local intermediate checkpoint representing a state of the secondary data store chronologically between said previous local checkpoint and said current local checkpoint; sending the intermediate checkpointing information to said primary data store; receiving, from said primary data store, a second incremental difference checksum; creating said local intermediate checkpoint using said intermediate checkpointing information; calculating a second local incremental difference checksum corresponding to said second received incremental difference checksum; comparing said second local incremental difference checksum to said second received incremental difference checksum to determine whether said discrepancy was introduced before said intermediate checkpoint; and repeating the steps of calculating intermediate checkpointing information, sending, receiving, creating, calculating, and comparing to further narrow a range of time during which said discrepancy was introduced until said range satisfies a predetermined criterion.