Synchronizing a store with write generations
First Claim
1. In a system including a device that synchronizes with a synchronization partner, wherein objects or changes to objects are written to the device during synchronization, a method for synchronizing the device and the synchronization partner such that the objects or changes to objects written to the device during synchronization are not synced back to the synchronization partner in future synchronizations, the method comprising acts of:
- performing a synchronization checkpoint by a sync client of the device to initiate a synchronization between the synchronization partner and the device;
updating a synchronization state in a sync state object using the value of the global GID, wherein the synchronization state includes a Sync To GID, a Sync From GID, and write generations, wherein the write generations include a current write GID and a write generation list;
incrementing a global GID to a new value from the present value;
detecting changed objects based on the synchronization state; and
synchronizing the changed objects, wherein the write generations prevent objects or changes to objects written by the sync client from being synchronized unnecessarily.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for synchronizing a device and for ensuring that updates to the device occurring during synchronization are not re-synchronized to the synchronization partner. Generation identifiers (GIDs), which are updated each time a synchronization occurs, are assigned to objects in a store. When synchronization occurs, a sync client uses state information, which is used to indicate which generations have been synchronized, to determine which objects have changed since the last synchronization. The state information includes reserved write GIDs that are only used by a particular sync client that performs writes during a synchronization. Objects having a GID that matches a write GID are not synchronized because they were written by the sync client during the previous synchronization.
-
Citations
39 Claims
-
1. In a system including a device that synchronizes with a synchronization partner, wherein objects or changes to objects are written to the device during synchronization, a method for synchronizing the device and the synchronization partner such that the objects or changes to objects written to the device during synchronization are not synced back to the synchronization partner in future synchronizations, the method comprising acts of:
-
performing a synchronization checkpoint by a sync client of the device to initiate a synchronization between the synchronization partner and the device;
updating a synchronization state in a sync state object using the value of the global GID, wherein the synchronization state includes a Sync To GID, a Sync From GID, and write generations, wherein the write generations include a current write GID and a write generation list;
incrementing a global GID to a new value from the present value;
detecting changed objects based on the synchronization state; and
synchronizing the changed objects, wherein the write generations prevent objects or changes to objects written by the sync client from being synchronized unnecessarily. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19)
-
-
12. In a system including a device that synchronizes with a synchronization partner through a sync client, a method for reserving generation identifiers (GIDs) for updates performed by the sync client such that objects updated to the device during synchronization are not synchronized back to the synchronization partner, the method comprising acts of:
-
receiving a sync state object by a sync client when a synchronization checkpoint is initiated, wherein the sync state object includes a Sync From GID, a Sync To GID, a current write GID and a write generation list, wherein the write generation list stores reserved GIDs updating the sync state object such that the Sync To GID is transferred to the Sync From GID, a current value of a global GID is assigned to the Sync To GID, and reserved GIDs in the write generation list that are less than the Sync From GID are purged from the write generation list;
incrementing the global GID, wherein the global GID is assigned to a public write GID; and
when a write is performed by the sync client and the current write GID is less than the public write GID;
transferring the current write GID to the write generation list;
incrementing the global GID to a reserved value; and
assigning the reserved value to both the current write GID and to the generation property of the object.
-
-
20. In a system including a device that synchronizes with one or more synchronization partners and wherein objects stored on the device can be updated during synchronization with the one or more synchronization partners, wherein the origin of updated objects is unknown and are therefore synced back to the one or more synchronization partners unnecessarily, a method for providing reserved generation identifiers (GIDs) such that the updated objects are not synced back to the one or more synchronization partners unnecessarily, the method comprising acts of:
-
assigning a global GID to a store of the device, wherein a value of the global GID is assigned to a generation property of each object in the store whenever each object is updated, wherein the value of the GID assigned to the generation property is either a public write GID or a current write GID;
incrementing the global GID each time the store of the device is synchronized;
wherein the synchronization is defined by a Sync To GID and a Sync From GID included in a sync state object associated with the synchronization;
assigning a reserved GID to the generation property of an object in the store of the device when the object is updated by a sync client during synchronization, wherein the reserved GID is derived from the global GID and wherein the reserved GID is only used by the sync client and is stored in the current write GID of the sync state object of the sync client; and
during a next synchronization;
ensuring that an object is not synchronized if the generation property of the object matches the reserved GID stored in the sync state object. - View Dependent Claims (21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38)
-
-
27. In a system including a device that synchronizes with a synchronization partner, wherein objects in a store of the device are updated during synchronization, a computer program product for implementing a method for synchronizing the device and the synchronization partner using reserved GIDs such that objects written to the device are not synchronized back to the synchronization partner, the computer program product comprising:
a computer readable medium for carrying computer executable instructions for implementing the method, wherein the method comprises acts of;
initiating a synchronization checkpoint by a sync client to begin synchronization between the device and the synchronization partner;
saving a sync state object, wherein the sync state object includes a synchronization state including a Sync From GID and a Sync To GID;
detecting changed objects using the synchronization state, wherein the synchronization state identifies generations greater than to the Sync From GID and less than or equal to the sync to GID;
updating objects in the store of the device, wherein objects updated by the sync client store a reserved GID that is used only by the sync client in their GID property; and
storing the reserved GID in the sync state object.
-
34. In a system including a device that synchronizes with a synchronization partner, wherein objects or changes to objects are written to the device during synchronization, a method for synchronization the device and the synchronization partner such that the objects of changes to objects written to the device during synchronization are not synced back to the synchronization partner in future synchronizations, the method comprising acts of:
-
initiating a sync checkpoint by a sync client;
updating a sync state object of the sync client, wherein the sync state object is persisted after it is updated;
creating a change manifest for use in the synchronization, wherein the change manifest represents objects to be synchronized;
receiving a partner manifest from the synchronization partner; and
updating objects in a store of the device according to the change manifest and the partner manifest, the act of updating objects comprising;
if the sync client has a valid current write GID, assigning the current write GID of the sync client to the GID property of the objects written by the sync client during the synchronization, wherein the current write GID is unique to the sync client;
if the sync client does not have a valid current write GID, allocating a new current write GID for the sync client and assigning the new current write GID to the GID property of the objects written by the sync client during the synchronization; and
persisting the sync state object. - View Dependent Claims (39)
-
Specification