WO2011109416A2 - Automatic synchronization conflict resolution - Google Patents
Automatic synchronization conflict resolution Download PDFInfo
- Publication number
- WO2011109416A2 WO2011109416A2 PCT/US2011/026711 US2011026711W WO2011109416A2 WO 2011109416 A2 WO2011109416 A2 WO 2011109416A2 US 2011026711 W US2011026711 W US 2011026711W WO 2011109416 A2 WO2011109416 A2 WO 2011109416A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- conflict
- synchronized
- computing device
- synchronization
- item
- Prior art date
Links
- 230000001360 synchronised effect Effects 0.000 claims abstract description 223
- 230000008859 change Effects 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 46
- 230000015654 memory Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 13
- 230000007704 transition Effects 0.000 description 7
- 230000001788 irregular Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 235000019580 granularity Nutrition 0.000 description 2
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Definitions
- Rule-based conflict resolution is performed to automatically resolve the synchronization conflict.
- the rule-based conflict resolution is based at least in part on a type of the change made to the first synchronized item, a type of the change made to the second synchronized item, and a set of multiple rules.
- a notification of the resolution is sent to the second computing device.
- FIG. 1 illustrates an example system implementing the automatic synchronization conflict resolution in accordance with one or more embodiments.
- FIG. 2 is a block diagram illustrating an example state diagram used in identifying which computing device is the resolver for a synchronization conflict in accordance with one or more embodiments.
- FIG. 3 illustrates an example diagram identifying the results of resolving synchronization conflicts in accordance with one or more embodiments.
- Fig. 4 is a flowchart illustrating an example process for automatic synchronization conflict resolution in accordance with one or more embodiments.
- Fig. 5 is a flowchart illustrating an example process for using a set of rules to automatically resolve a synchronization conflict in accordance with one or more embodiments.
- Fig. 6 illustrates an example computing device that can be configured to implement the automatic synchronization conflict resolution in accordance with one or more embodiments.
- FIG. 1 illustrates an example system 100 implementing the automatic synchronization conflict resolution in accordance with one or more embodiments.
- System 100 includes multiple (x) computing devices 102 that can communicate with a synchronization service 104 via a network 106.
- Network 106 can be a variety of different networks, including the Internet, a local area network (LAN), a public telephone network, a cellular or other wireless phone network, an intranet, other public and/or proprietary networks, combinations thereof, and so forth.
- Each computing device 102 can be a variety of different types of devices.
- a computing device 102 can be a desktop computer, a mobile station, an entertainment appliance, a set-top box communicatively coupled to a display device, a television, a cellular or other wireless phone, a personal digital assistant (PDA), a game console, an automotive computer, and so forth.
- PDA personal digital assistant
- each computing device 102 can range from a full resource device with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., traditional set-top boxes, hand-held game consoles).
- Different computing devices 102 can be the same type or alternatively different types of devices.
- Synchronization service 104 can be implemented using one or more of a variety of different types of computing devices. Similar to the discussion of computing device 102, service 104 can be implemented in a range of devices from a full resource device with substantial memory and processor resources to a low-resource device with limited memory and/or processing resources.
- Each computing device 102 includes a synchronization module 112 having a synchronization feed module 114, a resolver identification module 116, a conflict resolution module 118, and a set of rules 120.
- Synchronization feed module 114 identifies changes made to local copies of items on computing device 102 and sends notifications of those changes to the other computing devices 102 having local copies of those items.
- Resolver identification module 116 identifies situations in which a synchronization conflict among changes to two or more copies of a synchronized item, or among changes to two or more different synchronized items, exists.
- a synchronization conflict (also referred to as simply a conflict) can exist when two or more copies of a synchronized item are changed in different manners on different computing devices 102.
- a synchronization conflict can also exist when a synchronized item that is a folder is changed and a synchronized item that is a file or other folder within that folder is also changed.
- a variety of different types of changes can result in synchronization conflicts, such as editing of a file, renaming of a file or folder, deletion of a file or folder, and so forth as discussed in more detail below.
- Each resolver identification module 1 16 also determines, when a synchronization conflict exists, whether the computing device 102 that includes that resolver identification module 116 is responsible for resolving the synchronization conflict.
- Each conflict resolution module 118 resolves synchronization conflicts for the computing device 102 that includes that conflict resolution module 118 when that computing device 102 is responsible for resolving the synchronization conflict.
- the synchronization conflict is resolved automatically by the conflict resolution module 1 18 based on a set of rules 120 as discussed in more detail below.
- the resolution of the synchronization conflict is referred to as automatic because it is typically performed without any user input or user indication of how to resolve the synchronization conflict.
- Each computing device 102 also has a corresponding storage device 122.
- Storage device 122 can be a fixed or removable storage device. In one or more embodiments, storage device 122 is included as part of computing device 102 (e.g., an internal disk drive of computing device 102). Alternatively, this storage device can be coupled to computing device 102, such as via a bus (e.g., an IEEE 1394 bus, a universal serial bus (USB), a wireless universal serial bus (wireless USB), etc.), via a local network (e.g., a LAN), and so forth.
- a single storage device 122 is illustrated in computing devices 102 of Fig. 1 , it is to be appreciated that a computing device 102 can include multiple storage devices 122.
- synchronization service 104 facilitates synchronization of items across computing devices 102.
- Synchronization service 104 includes a synchronization feed control module 124 that receives synchronization feeds from the synchronization feed modules 114 and forwards the synchronized feeds to the other synchronization feed modules 114 of the other computing devices 102 across which items are synchronized.
- the synchronization feeds include information identifying changes made to synchronized items, and can also include the synchronized items themselves.
- synchronization feed control module 124 stores the synchronization feeds for an amount of time, allowing the synchronization feeds to be communicated from one computing device 102 to another even though both computing devices may not be in communication with synchronization service 104 at the same time.
- synchronization service 104 is illustrated in Fig. 1, in other embodiments no such service need be used.
- items can be synchronized across computing devices 102 directly via network 106 without the assistance of synchronization service 104.
- items can be synchronized across computing devices 102 by devices 102 communicating directly with one another via a wired or wireless connection and independently of network 106.
- the computing devices 102 across which items are synchronized can be identified in a variety of different manners.
- a user of a particular computing device 102 identifies one or more other computing devices 102 with which items are synchronized.
- These one or more other computing devices 102 can be identified, for example, via a user interface displayed or otherwise presented on the particular computing device 102.
- These computing devices 102 across which items are synchronized include, for example, other computing devices 102 that are owned and/or used by the user.
- computing device 102 can communicate with a remote service, such as synchronization service 104, to identify possible other computing devices 102 across which items are synchronized.
- a remote service such as synchronization service 104
- These possible other computing devices can be identified in different manners, such as by including computing devices that the user selects to register with synchronization service 104 for synchronization, computing devices from which the user logs into synchronization service 104, computing devices from which the user logs into synchronization service 104 using the same user credentials (such as id and password), and so forth.
- Synchronization service 104 maintains a record of these possible other computing devices. This record can be accessed by computing device 102, and a user interface displayed or otherwise presented by computing device 102 allowing the user to select one or more computing devices from these possible computing devices. These selected computing devices are the devices across which items are synchronized.
- the computing devices 102 across which items are synchronized are identified in different manners.
- items can be synchronized across all computing devices 102 from which a user logs into a remote service (such as synchronization service 104), or logs into a remote service using the same user credentials (such as id and password).
- a user can specify via a user interface presented by the synchronization service 104 when the user is logged into synchronization service 104 with a particular computing device, whether application settings are to be roamed with that particular computing device.
- items can also be synchronized across different portions of the same computing device.
- a folder of a first user of a computing device 102 e.g., the folder users ⁇ userl ⁇ photos
- a folder of a second user of the same computing device 102 e.g., the folder users ⁇ user2 ⁇ pictures
- the discussions herein referring to synchronizing items across computing devices apply analogously to synchronizing items across different portions of the same computing device.
- items can be synchronized across computing devices regardless of the user that is logged into the computing device.
- a synchronized item can be changed by different users that log into a remote service using different user credentials.
- the items that are identified as to be synchronized are synchronized regardless of the user that makes a change to an item.
- a variety of different items can be synchronized across computing devices 102.
- Information or data that can be stored or otherwise maintained on storage device 122 can be items synchronized across computing devices 102.
- the items synchronized across computing devices 102 include both files and folders (also referred to as directories).
- One or more other folders and/or files can be stored in a folder.
- Other types of information or data can also be items synchronized across computing devices 102, such as configuration values or settings. These other types of information or data need not be a file or folder, but can be information or data that is, for example, maintained as a data structure in memory during operation of a computing device 102. Items that are synchronized across computing devices 102 are also referred to as synchronized items.
- the particular items that are synchronized can be identified in different manners.
- one or more particular folders on storage device 122 are selected for synchronization. These one or more particular folders can include a default folder, and/or folders selected by a user (or other component or module of computing device 102). Files and/or other folders stored within these one or more folders are synchronized items.
- the particular items that are synchronized can be identified in other manners, such as particular files selected by a user or administrator, all files and/or folders on storage device 122, all files and/or folders in a particular partition or volume of storage device 122, and so forth.
- Synchronization feed module 114 monitors synchronized items on the particular computing device 102 in which it is included to identify when a synchronized item is changed.
- Synchronization feed module 114 can monitor the synchronized items in a variety of different manners. For example, module 114 can maintain a record of the synchronized items, the record including, for each synchronized item, an identifier of the synchronized item, optionally a version number of the synchronized item, and a hash value of the synchronized item generated by applying a variety of different conventional hash functions to the synchronized item.
- Module 114 can check the synchronized items at regular or irregular intervals, checking whether one or more of the synchronized items has been changed since the last time the synchronized items were checked. This checking can be performed by, for example, generating a new hash value for the synchronized item and comparing the new hash value to the hash value for the synchronized item in the record. If the new hash value and the hash value for the synchronized item in the record are different, then a change to the synchronized item is identified.
- the record can include timestamps for each synchronized item.
- the timestamp of a synchronized item is the time when the synchronized item was last changed.
- the timestamp can be recorded, for example, by the application changing the synchronized item or an operating system of the computing device.
- Module 114 can check the synchronized items at regular or irregular intervals, checking whether one or more of the synchronized items has been changed since the last time the synchronized items were checked. This checking can be performed by, for example, comparing the current timestamp of the synchronized item to the timestamp of the synchronized item in the record. If the current timestamp of the synchronized item and the timestamp of the synchronized item in the record are different, then a change to the synchronized item is identified.
- changes to synchronized items can be identified in different manners.
- module 114 can be notified by another component or module (e.g., by an application making the change, by an operating system running on the same computing device as the module 114, etc.) when a synchronized item is changed.
- Synchronization feed module 114 communicates, to each of the synchronization feed modules 114 of the other computing devices 102 across which items are synchronized, a notification indicating each changed synchronized item that has been identified.
- This indication includes the information maintained in the record by module 114 (e.g., an identifier of the synchronized item, a version number of the synchronized item, and a hash value and/or timestamp of the synchronized item).
- the changed synchronized item is also communicated to each of the synchronization feed modules of the other computing devices 102.
- a synchronization module 112 can store one or more changes to one or more synchronized items for an amount of time, and this amount of time can vary.
- this amount of time can be a particular number of minutes, a particular number of hours, an amount of time that lapses until at least a threshold number of changes have been stored, an amount of time that lapses until some other event occurs (e.g., the computing device that includes the synchronization module 112 logs into a remote service, an amount of bandwidth of the computing device that includes the synchronization module 112 or a network that the computing device is coupled to becomes free, etc.), and so forth.
- some other event e.g., the computing device that includes the synchronization module 112 logs into a remote service, an amount of bandwidth of the computing device that includes the synchronization module 112 or a network that the computing device is coupled to becomes free, etc.
- both the indication of the changed synchronized item and the changed synchronized item itself need not be communicated to the other computing devices 102 across which the item is synchronized.
- just the changed synchronized item can be sent (the item itself serving as the indication of the changed synchronized item).
- the indication of the changed synchronized item can be sent, but the changed synchronized item itself not sent until requested by another computing device (e.g., requested by the computing device that is a resolver of a conflict as discussed in more detail below).
- synchronization feed module 114 maintains a history or other record of changes to synchronized items and the resolutions of conflicts, regardless of which computing device the change was made on.
- This history allows, for example, a user or other component or module to view and identify past changes to synchronized items that have been made and how past conflicts were resolved.
- This history or record can include a variety of different numbers of changes and conflict resolutions. For example, only the most recent change and conflict resolution can be maintained in the record, a larger number of changes (e.g., 100) and conflict resolutions can be maintained in the record, changes and conflict resolutions that occupy a particular amount of space (e.g., 1 Megabyte) can be maintained, and so forth.
- Each computing device 102 maintains a copy of the synchronized item.
- the synchronization supported by the automatic synchronization conflict resolution discussed herein is also referred to as a multi master replication system.
- a copy of the synchronized item can also be, but need not be, maintained by synchronization service 104.
- Copies of synchronized items that lose during the conflict resolution as discussed in more detail below can also be maintained by synchronization service 104.
- a copy of a synchronized item that is not kept according to the rules discussed in more detail below can still be maintained by synchronization service 104 (e.g., to allow a user to rollback or undue a change automatically made using the techniques discussed herein).
- Synchronization conflicts can arise between two synchronized items.
- a synchronization conflict occurs when two or more copies of a synchronized item are changed and indications of those changes are communicated via the synchronization feed modules 114 at approximately the same time.
- a synchronization conflict also occurs when a synchronized item that is a folder is changed and a synchronized item that is a file or other folder within that folder is also changed, and indications of those changes are communicated via the synchronization feed modules 114 at approximately the same time.
- Synchronization feed module 114 determines that a conflict is present when module 1 14 determines, based on the indications of changed synchronized items it has received from other modules 114 as well as the changed synchronized items it has identified, that there are two or more changes to the same synchronized item (or to a synchronized item within another synchronized item) without an indication that the conflict has been resolved.
- synchronization feed module 114 Upon receipt of an indication of a changed synchronized item for which there is no conflict, synchronization feed module 114 replaces the copy of that synchronized item in storage device 122. Synchronization feed module 114 also updates its record for the synchronized item to reflect the hash value or timestamp of the changed synchronized item. This timestamp refers to the timestamp of when the item was changed at the computing device on which the change was originally made.
- each computing device 102 across which the items are synchronized has a copy of each of the conflicting changed synchronized items.
- one of the computing devices 102 across which the items are synchronized becomes the resolver for the conflict, and resolves the conflict based on a set of rules. The resolver then communicates the resolution of the conflict to the other computing devices 102 across which the items are synchronized.
- each synchronization feed module 114 identifies a default winner, which is the copy of the synchronized item that is initially identified as the copy of the synchronized item that is to be used.
- the default winner can be identified in a variety of different manners. In one or more embodiments, the default winner is identified as the copy of the synchronized item (or the indication of the changed synchronized item) having the most recent timestamp.
- different criteria can be used, such as the copy of the synchronized item (or the indication of the changed synchronized item) having the least recent timestamp, the synchronized item with the hash value that is the largest value, the synchronized item with the numerically smallest hash value, the synchronized item coming from the computing device 102 which has been declared a primary device (or master device, or default winning device), and so forth.
- the default winner can be identified in different manners, the different synchronization feed modules 1 14 typically identify the default winner so that each module 114 identifies the same winner.
- the copies of the synchronized items that are not the default winner are each a default loser.
- the default winner is displayed or otherwise presented to the user as the correct version of the synchronized item, although this can change after applying the set of rules 120 as discussed below.
- the default losers are maintained separately, such as in a separate folder or portion of storage device 122. However, each computing device 102 across which the items are synchronized has a copy of each of the conflicting changed synchronized items, including the default winner and the default losers.
- the default losers are thus available on the computing devices 102, although are not typically displayed as being available to the users of computing devices 102. Alternatively, one or more indications of these default losers can be displayed or otherwise presented to the users of computing devices 102.
- a default winner need not be identified to users of computing devices 102. Rather, multiple copies of the synchronized items can be displayed to the user as the correct version (but optionally with an indication that there is a conflict).
- the default winner can be identified in different manners by different modules (which can result in different modules identifying different default winners).
- a single computing device 102 becomes the resolver of the conflict as discussed in more detail below.
- the different synchronization modules 112 can represent conflicts in different manners (including identifying default winners in different manners), while a single computing device becomes the resolver for the conflict. Accordingly, the particular item that is the default winner can vary based on the computing device that becomes the resolver for the conflict.
- One of the computing devices 102 across which items are synchronized becomes the resolver for the conflict. Although multiple computing devices 102 determine the copy of the synchronized item that is the default winner, just one computing device 102 becomes the resolver for the conflict. Having a single resolver for the conflict removes the possibility of a cascading set of conflicts resulting from multiple computing devices 102 resolving the conflict concurrently.
- the resolver for the conflict can be determined in a variety of different manners, as long as just one computing device 102 becomes the resolver for the conflict.
- the other computing devices 102 across which the items are synchronized attempt, at regular or irregular intervals, to become the resolver for the conflict. Such attempts continue until the conflict is resolved.
- the computing device 102 that is initially the resolver of the conflict ceases to become the resolver (e.g., due to a failure of the computing device, the computing device being powered down or logged out of a remote service, etc.)
- another computing device 102 can become the resolver and finish resolving the conflict.
- a resolver identification module 116 determines whether that computing device 102 is the resolver for the conflict. In one or more embodiments, each resolver identification module 116 attempts to write a particular value as a token indicating the module 116 is attempting to resolve the conflict. The resolver identification modules 116 use an optimistic concurrency technique to verify that if multiple resolver identification modules 116 attempt to write to that token at approximately the same time, just one of the modules 116 will succeed in writing to that token. The computing device 102 that includes the resolver identification module 116 that is successful in writing to the token is the resolver for the conflict.
- synchronization service 104 can facilitate identifying which computing device 102 is the resolver for the conflict, such as by maintaining a token that is requested by a resolver identification module 116 in order to become the resolver for the conflict. Synchronization service 104 provides the token to only one resolver identification module 116 at a time, and does not provide the token to another module 1 16 until the token has been returned. The computing device 102 that includes the resolver identification module 116 that has the token is the resolver of the conflict. By way of yet another example a user selection of the one of the computing devices 102 that is to be the resolver for the conflict can be received.
- Fig. 2 is a block diagram illustrating an example state diagram 200 used in identifying which computing device is the resolver for a synchronization conflict in accordance with one or more embodiments.
- State diagram 200 is used by each resolver identification module (e.g., module 116 of Fig. 1).
- State diagram 200 includes an initial state 202, a pending state 204, a resolve state 206, and an idle state 208.
- the resolver identification module uses a resolver value.
- the resolver value is a value that can be read from and written to by the resolver identification modules of the different computing devices. This resolver value is, for example, the token value when using optimistic concurrency.
- Initial state 202 is the initial state of the resolver identification module, and is the state of the resolver identification module when the resolver identification module begins running. If the synchronization feed module (e.g. module 112 of Fig. 1) determines there is a conflict, then the resolver identification module records the current resolver value and transitions to pending state 204. However, if the synchronization feed module determines there is no conflict, then the resolver identification module transitions to the idle state 208. When in idle state 208, the resolver identification module remains in idle state 208 until the synchronization feed module determines there is a conflict, at which point the resolver identification module records the current resolver value and transitions to pending state 204.
- the synchronization feed module e.g. module 112 of Fig. 1
- the resolver identification module attempts to become the resolver of the conflict by attempting to write a new resolver value. While in pending state 204, at regular or irregular intervals, the resolver identification module also reads the current resolver value and compares the read value with the resolver value that was previously recorded. In one or more embodiments, this interval is a time 2t, where values of t can vary (e.g., 30 seconds, one minute, one hour, five hours, etc.). If the values are the same and a conflict still exists, then the resolver identification module remains in pending state 204. However, if the values are not the same and a conflict still exists, then the resolver identification module attempts to write a new resolver value.
- the new resolver value that the resolver attempts to write is, for example, a combination (e.g., a concatenation) of an identifier of the computing device that includes the resolver identification module and a globally unique identifier (GUID).
- GUID globally unique identifier
- the resolver identification module When the resolver identification module is in resolve state 206, the computing device that includes that resolver identification module is the resolver of the conflict.
- a conflict resolution module (e.g., module 118 of Fig. 1) of the computing device resolves the conflicts based on a set of rules as discussed in more detail below.
- the resolver identification module remains in resolve state 206, resolving the conflicts and writing a new resolver value after each conflict is resolved, or at regular or irregular intervals. This regular or irregular interval is less than the interval at which the resolver values are compared when in pending state 204, and in one or more embodiments this interval is at time t. If the writing of the new resolver value fails, or an error is otherwise encountered, the resolver identification module records the current resolver value and transitions to pending state 204. After the conflicts are resolved the resolver identification module transitions to idle state 208.
- the conflict is resolved by the conflict resolution module 118 of the computing device 102 that is the resolver of the conflict.
- This resolution is performed based on a set of one or more rules 120.
- Different types of conflicts can arise, such as conflicts involving different changes to the same file, conflicts involving a change and deletion of a file, conflicts involving a change of a file and a deletion of a folder in which the file is stored, and so forth.
- changes to files can be changes to the content of the file (e.g., the file data itself), or alternatively to metadata associated with the file (e.g., a play count or user rating associated with a music file).
- Conflict resolution module 118 identifies the type of conflict that has arisen, and identifies a rule from the set of rules 120 that applies to that type of conflict. The identified rule specifies how the conflict is to be resolved, and conflict resolution module 118 resolves the conflict in accordance with the identified rule.
- a variety of different changes to a synchronized item can potentially result in a conflict. These changes can include, for example, renaming of an item, deletion of an item, changing the content of an item, changing the metadata associated with an item, and so forth.
- Table I lists examples of types of changes to synchronized items that can potentially result in a conflict. It is to be appreciated that the changes in Table I are only examples, and that other types of changes can also potentially result in a conflict.
- a set of rules is applied to resolve a conflict.
- a variety of different rules can be applied.
- Table II lists examples of rules that can be applied to resolve a conflict. It is to be appreciated that the rules in Table II are only examples, and that other rules can alternatively be applied.
- the rules in Table II are checked in their order (e.g., rule 1 first, rule 2 second, and so forth), and as soon as a rule that applies is identified that rule is used to resolve the conflict. Table II
- conflict resolution module 1 18 is configured with information indicating which items can be merged and under what circumstances those items can be merged. Module 118 can be configured with this information by, for example, a developer or administrator of module 118.
- module 1 18 can be configured with an indication that metadata that is a multi instance value (e.g., names of individuals tagged in photo files) can be merged together by keeping the multiple values of the instance, but metadata that is a single instance value (e.g., a rating of a music file) cannot be merged because only one value can be maintained.
- module 1 18 can be configured with an indication that a file rename can be merged with the editing of the file content by keeping both the renamed file and the edits to the file content.
- an indication of both versions is presented by the computing devices 102.
- This indication can be, for example, a particular naming convention that indicates there are two versions of the synchronized item, such as including a file named "foo.docx" and a file named "fooA.docx", or each file having a name that includes a timestamp of when the file was changed.
- indications of both versions can be displayed or otherwise presented by the computing devices 102 in different manners, such as by a dialog box indicating the conflict, a flag or other indicator of the conflict, and so forth.
- an additional component or module can be invoked by conflict resolution module 118 to assist a user in combining or selecting from both versions of a synchronized item. For example, if a conflict is changes to a word processing document, merge functionality of a word processing application can be invoked to create a merged document that can be displayed to the user. This merged document is a document that includes and identifies the changes from both versions of the synchronized item (in accordance with techniques used by the word processing application to provide the merge functionality). Similar merging or combining functionality of other applications can also be invoked.
- FIG. 3 illustrates an example diagram 300 identifying the results of resolving synchronization conflicts in accordance with one or more embodiments.
- the type of change of the default winner is shown along (vertical) axis 302, while the type of change of the default loser is shown along (horizontal) axis 304.
- the intersection of the two types of changes in diagram 300 is a cell that identifies whether there is a conflict, and if so what the resolution of that conflict is.
- the value "M” indicates that the copies of the synchronized item are merged together.
- the value "W" indicates that the default winner is kept and the default loser is discarded or ignored.
- the value "S” indicates that the default winner and default loser are swapped, resulting in what was the default loser being kept and what was the default winner being discarded or ignored.
- the value "B” indicates that both the default winner and the default loser are kept.
- the value "O” indicates that the file is orphaned, so the folder is kept but includes a single file (which is the file with which the conflict existed).
- the value "N” indicates there is no conflict. [0057]
- a number is included in some of the cells in diagram 300. This number refers to a particular rule (from Table II discussed above) that is applied to achieve the indicated result.
- the intersecting cell indicates that, according to rule 1 of Table II, the edited file is kept rather than deleted.
- the intersecting cell indicates that, according to rule 3 of Table II, the items are merged together so that both the file content edits and the file renaming are kept.
- three or more synchronized items can conflict with one another. For example, three or more copies of a particular synchronized item can be changed approximately concurrently. Such conflicts are resolved one by one, with one of the synchronized items being the default winner as discussed above, and the remaining synchronized items being default losers. The resolver then resolves the conflicts one by one, comparing the default winner to one of the default losers and resolving the conflict between those two synchronized items based on the set of rules as discussed above. It should be noted that during this process, the particular synchronized item that is the default winner can change as a result of applying one or more of the rules.
- the same computing device can be the resolver for the multiple conflicts of the synchronized items, or alternatively different computing devices can be the resolver for different conflicts.
- synchronized items can be changed by the same user or alternatively different users.
- computing devices via which the changes are made can be owned or managed by different user accounts (used to log into the computing device and/or a remote service). Conflicts are resolved as discussed above regardless of whether the same or different users changed the synchronized item, and regardless of the user account that owns or manages the different computing devices.
- conflicts can be resolved at a variety of different granularities. For example, conflicts can be resolved on a per-file basis, on a per-folder basis, across multiple folders within a specified folder, and so forth.
- Different conflict resolution modules e.g., modules 118 of Fig. 1
- modules 118 of Fig. 1 can be included on a computing device 102 to resolve conflicts at these different granularities. Accordingly, multiple different conflict resolution modules on a computing device 102 can be running concurrently to resolve conflicts for different synchronized items. Furthermore, different conflict resolution modules on different computing devices 102 can be running concurrently to concurrently resolve conflicts for different synchronized items.
- Fig. 4 is a flowchart illustrating an example process 400 for automatic synchronization conflict resolution in accordance with one or more embodiments.
- Process 400 is carried out by a device, such as a computing device 102 of Fig. 1, and can be implemented in software, firmware, hardware, or combinations thereof.
- Process 400 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.
- Process 400 is an example process for automatic synchronization conflict resolution; additional discussions of automatic synchronization conflict resolution are included herein with reference to different figures.
- process 400 a notification of each type of change to a synchronized item is sent to the other computing devices (act 402). These other computing devices are the other devices across which the item is synchronized. A variety of different types of changes can be made, as discussed above.
- a notification of a change to a synchronized item by another device is also received (act 404).
- the changed synchronized item is also received from the other device as discussed above.
- a check is made as to whether there is a conflict with the received change (act 406).
- a conflict can arise, for example, as a result of multiple different changes of which notification was received in act 404, or as a result of a change made by the device implementing process 400 and a change of which notification was received in act 404.
- the device implementing process 400 attempts to become the resolver for the conflict (act 410).
- the device can attempt to become the resolver for the conflict in a variety of different manners as discussed above.
- Process 400 then proceeds based on a check of whether the attempt to become the resolver is successful (act 412). If the attempt to become the resolver is not successful, then process 400 returns to act 406. Eventually, the device will be successful in its attempt to become the resolver, or the conflict will no longer exist (e.g., due to another device having become the resolver and resolving the conflict). [0069] If the attempt to become the resolver is successful, then rule-based conflict resolution is automatically performed to resolve the conflict (act 414). A variety of different rules can be applied, as discussed above.
- a notification of the resolution is sent to the other computing devices (act 416).
- This notification can take different forms, such as sending an indication that the conflict is resolved and one or more actions the other computing devices are to take regarding a synchronized item (e.g., rename an item, delete an item, etc.), sending an indication that the conflict is resolved and a copy of the synchronized item (e.g., a merged filed) that each of the other computing devices is to store as their copy of the synchronized item, and so forth.
- These other computing devices are the other devices across which the item is synchronized.
- This notification is received by the other devices and incorporated into their local copies of the synchronized item.
- Process 400 then returns to act 404, where additional notifications of changes to synchronized items can be received.
- Fig. 5 is a flowchart illustrating an example process 500 for using a set of rules to automatically resolve a synchronization conflict in accordance with one or more embodiments.
- Process 500 is carried out by a device, such as a computing device 102 of Fig. 1, and can be implemented in software, firmware, hardware, or combinations thereof.
- Process 500 can implement, for example, act 414 of Fig. 4.
- Process 500 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.
- Process 500 is an example process for using a set of rules to automatically resolve a conflict; additional discussions of using a set of rules to automatically resolve a conflict are included herein with reference to different figures.
- An edit-delete conflict is a conflict in which one synchronized item is edited and another synchronized item is deleted.
- the edit and delete can be for different copies of the same synchronized item, or alternatively one of the edit and delete can be to a particular folder and the other of the edit and delete can be to a file or other folder included in that particular folder.
- the synchronization conflict is an edit-delete conflict
- the synchronization item that is the edit is kept (act 504).
- the synchronization item that is the delete is ignored and discarded. This result is the application of rule 1 of Table II discussed above.
- An add-delete conflict is a conflict in which one synchronized item is added and another synchronized item is deleted. The add and delete can be for different copies of the same synchronized item, or alternatively one of the add and delete can be to a particular folder and the other of the add and delete can be to a file or other folder included in that particular folder.
- the synchronization conflict is an add-delete conflict
- the synchronization item that is the add is kept (act 508).
- the synchronization item that is the delete is ignored and discarded. This result is the application of rule 2 of Table II discussed above.
- An edit- edit conflict is a conflict in which two synchronized items are edited.
- the edits can be for different copies of the same synchronized item, or alternatively one of the edits can be to a particular folder and the other of the edits can be to a file or other folder included in that particular folder.
- a delete- delete conflict is a conflict in which two synchronized items are deleted.
- the deletes can be for different copies of the same synchronized item, or alternatively one of the deletes can be to a particular folder and the other of the deletes can be to a file or other folder included in that particular folder.
- a rename-rename conflict is a conflict in which two synchronized items are renamed.
- the renames can be for different copies of the same synchronized item, or alternatively one of the renames can be to a particular folder and the other of the renames can be to a file or other folder included in that particular folder.
- Fig. 6 illustrates an example computing device 600 that can be configured to implement the automatic synchronization conflict resolution in accordance with one or more embodiments.
- Computing device 600 can be, for example, any of computing devices 102 of Fig. 1, can be a computing device implementing at least part of synchronization service 104 of Fig. 1.
- Computing device 600 includes one or more processors or processing units 602, one or more computer readable media 604 which can include one or more memory and/or storage components 606, one or more input/output (I/O) devices 608, and a bus 610 that allows the various components and devices to communicate with one another.
- Computer readable media 604 and/or one or more I/O devices 608 can be included as part of, or alternatively may be coupled to, computing device 600.
- Bus 610 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, a processor or local bus, and so forth using a variety of different bus architectures.
- Bus 610 can include wired and/or wireless buses.
- Memory/storage component 606 represents one or more computer storage media.
- Component 606 can include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth).
- Component 606 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so forth).
- the techniques discussed herein can be implemented in software, with instructions being executed by one or more processing units 602. It is to be appreciated that different instructions can be stored in different components of computing device 600, such as in a processing unit 602, in various cache memories of a processing unit 602, in other cache memories of device 600 (not shown), on other computer readable media, and so forth. Additionally, it is to be appreciated that the location where instructions are stored in computing device 600 can change over time.
- One or more input/output devices 608 allow a user to enter commands and information to computing device 600, and also allows information to be presented to the user and/or other components or devices.
- input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, and so forth.
- output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, and so forth.
- Computer readable media can be any available medium or media that can be accessed by a computing device.
- Computer readable media may comprise "computer storage media” and "communications media.”
- Computer storage media include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data.
- Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
- Communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism.
- Communication media also include any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
- any of the functions or techniques described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations.
- the terms "module” and “component” as used herein generally represent software, firmware, hardware, or combinations thereof.
- the module or component represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs).
- the program code can be stored in one or more computer readable media, further description of which may be found with reference to Fig. 6.
- the features of the automatic synchronization conflict resolution described herein are platform-independent, meaning that the techniques can be implemented on a variety of commercial computing platforms having a variety of processors.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Synchronizing For Television (AREA)
Abstract
A determination is made at a first computing device of whether there is a synchronization conflict between a change to a first synchronized item at the first computing device and a change to a second synchronized item at a second computing device. If a synchronization conflict exists, rule-based conflict resolution is performed to automatically resolve the synchronization conflict. The rule-based conflict resolution is based at least in part on a type of the change made to the first synchronized item, a type of the change made to the second synchronized item, and a set of multiple rules. A notification of the resolution is then sent to the second computing device.
Description
AUTOMATIC SYNCHRONIZATION CONFLICT RESOLUTION
Background
[0001] Currently, many people use multiple computers, such as their home computer, work computer, laptop computer, and so forth. When using multiple computers, situations can arise where a user desires to synchronize changes to documents across two computers. This synchronization allows changes made to a document on one of the computers to be automatically made on the other computer as well. However, this synchronization is not without its problems. One such problem is that different changes can be made to the documents on the two computers before they are able to synchronize with one another, making it difficult to determine exactly how to synchronize the documents.
Summary
[0002] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
[0003] In accordance with one or more aspects, a determination is made in a first computing device of whether there is a synchronization conflict between a change to a first synchronized item at the first computing device and a change to a second synchronized item at a second computing device. Rule-based conflict resolution is performed to automatically resolve the synchronization conflict. The rule-based conflict resolution is based at least in part on a type of the change made to the first synchronized item, a type of the change made to the second synchronized item, and a set of multiple rules. A notification of the resolution is sent to the second computing device.
Brief Description of the Drawings
[0004] The same numbers are used throughout the drawings to reference like features.
[0005] Fig. 1 illustrates an example system implementing the automatic synchronization conflict resolution in accordance with one or more embodiments.
[0006] Fig. 2 is a block diagram illustrating an example state diagram used in identifying which computing device is the resolver for a synchronization conflict in accordance with one or more embodiments.
[0007] Fig. 3 illustrates an example diagram identifying the results of resolving synchronization conflicts in accordance with one or more embodiments.
[0008] Fig. 4 is a flowchart illustrating an example process for automatic synchronization conflict resolution in accordance with one or more embodiments.
[0009] Fig. 5 is a flowchart illustrating an example process for using a set of rules to automatically resolve a synchronization conflict in accordance with one or more embodiments.
[0010] Fig. 6 illustrates an example computing device that can be configured to implement the automatic synchronization conflict resolution in accordance with one or more embodiments.
Detailed Description
[0011] Automatic synchronization conflict resolution is discussed herein. Different items, such as files and folders, can be synchronized across multiple computing devices. Each of the multiple computing devices maintains its own local copy of the items and synchronizes changes to those items with the other computing devices. When situations arise in which there are conflicting changes to items on different computing devices, one of the computing devices becomes a resolver for the conflict. The resolver identifies the types of changes made to the items and applies a set of rules to automatically determine how to resolve the conflicting changes. The resolver then resolves the conflicting changes as determined by an appropriate rule of the set of rules, and notifies the other computing devices of the resolution.
[0012] Fig. 1 illustrates an example system 100 implementing the automatic synchronization conflict resolution in accordance with one or more embodiments. System 100 includes multiple (x) computing devices 102 that can communicate with a synchronization service 104 via a network 106. Network 106 can be a variety of different networks, including the Internet, a local area network (LAN), a public telephone network, a cellular or other wireless phone network, an intranet, other public and/or proprietary networks, combinations thereof, and so forth.
[0013] Each computing device 102 can be a variety of different types of devices. For example, a computing device 102 can be a desktop computer, a mobile station, an entertainment appliance, a set-top box communicatively coupled to a display device, a television, a cellular or other wireless phone, a personal digital assistant (PDA), a game console, an automotive computer, and so forth. Thus, each computing device 102 can range from a full resource device with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., traditional set-top boxes, hand-held game consoles). Different computing devices 102 can be the same type or alternatively different types of devices.
[0014] Synchronization service 104 can be implemented using one or more of a variety of different types of computing devices. Similar to the discussion of computing device 102, service 104 can be implemented in a range of devices from a full resource device with substantial memory and processor resources to a low-resource device with limited memory and/or processing resources.
[0015] Each computing device 102 includes a synchronization module 112 having a synchronization feed module 114, a resolver identification module 116, a conflict resolution module 118, and a set of rules 120. Synchronization feed module 114 identifies changes made to local copies of items on computing device 102 and sends notifications of those changes to the other computing devices 102 having local copies of those items. Resolver identification module 116 identifies situations in which a synchronization conflict among changes to two or more copies of a synchronized item, or among changes to two or more different synchronized items, exists. A synchronization conflict (also referred to as simply a conflict) can exist when two or more copies of a synchronized item are changed in different manners on different computing devices 102. A synchronization conflict can also exist when a synchronized item that is a folder is changed and a synchronized item that is a file or other folder within that folder is also changed. A variety of different types of changes can result in synchronization conflicts, such as editing of a file, renaming of a file or folder, deletion of a file or folder, and so forth as discussed in more detail below. Each resolver identification module 1 16 also determines, when a synchronization conflict exists, whether the computing device 102 that includes that resolver identification module 116 is responsible for resolving the synchronization conflict.
[0016] Each conflict resolution module 118 resolves synchronization conflicts for the computing device 102 that includes that conflict resolution module 118 when that computing device 102 is responsible for resolving the synchronization conflict. The synchronization conflict is resolved automatically by the conflict resolution module 1 18 based on a set of rules 120 as discussed in more detail below. The resolution of the synchronization conflict is referred to as automatic because it is typically performed without any user input or user indication of how to resolve the synchronization conflict.
[0017] Each computing device 102 also has a corresponding storage device 122. Storage device 122 can be a fixed or removable storage device. In one or more embodiments, storage device 122 is included as part of computing device 102 (e.g., an internal disk drive of computing device 102). Alternatively, this storage device can be
coupled to computing device 102, such as via a bus (e.g., an IEEE 1394 bus, a universal serial bus (USB), a wireless universal serial bus (wireless USB), etc.), via a local network (e.g., a LAN), and so forth. Although a single storage device 122 is illustrated in computing devices 102 of Fig. 1 , it is to be appreciated that a computing device 102 can include multiple storage devices 122.
[0018] In one or more embodiments, synchronization service 104 facilitates synchronization of items across computing devices 102. Synchronization service 104 includes a synchronization feed control module 124 that receives synchronization feeds from the synchronization feed modules 114 and forwards the synchronized feeds to the other synchronization feed modules 114 of the other computing devices 102 across which items are synchronized. The synchronization feeds include information identifying changes made to synchronized items, and can also include the synchronized items themselves. In one or more embodiments, synchronization feed control module 124 stores the synchronization feeds for an amount of time, allowing the synchronization feeds to be communicated from one computing device 102 to another even though both computing devices may not be in communication with synchronization service 104 at the same time.
[0019] It should be noted that although synchronization service 104 is illustrated in Fig. 1, in other embodiments no such service need be used. For example, items can be synchronized across computing devices 102 directly via network 106 without the assistance of synchronization service 104. By way of another example, items can be synchronized across computing devices 102 by devices 102 communicating directly with one another via a wired or wireless connection and independently of network 106.
[0020] The computing devices 102 across which items are synchronized can be identified in a variety of different manners. In one or more embodiments, a user of a particular computing device 102 identifies one or more other computing devices 102 with which items are synchronized. These one or more other computing devices 102 can be identified, for example, via a user interface displayed or otherwise presented on the particular computing device 102. These computing devices 102 across which items are synchronized include, for example, other computing devices 102 that are owned and/or used by the user.
[0021] Alternatively, computing device 102 can communicate with a remote service, such as synchronization service 104, to identify possible other computing devices 102 across which items are synchronized. These possible other computing devices can be identified in different manners, such as by including computing devices that the user
selects to register with synchronization service 104 for synchronization, computing devices from which the user logs into synchronization service 104, computing devices from which the user logs into synchronization service 104 using the same user credentials (such as id and password), and so forth. Synchronization service 104 maintains a record of these possible other computing devices. This record can be accessed by computing device 102, and a user interface displayed or otherwise presented by computing device 102 allowing the user to select one or more computing devices from these possible computing devices. These selected computing devices are the devices across which items are synchronized.
[0022] In other alternative embodiments, the computing devices 102 across which items are synchronized are identified in different manners. For example, items can be synchronized across all computing devices 102 from which a user logs into a remote service (such as synchronization service 104), or logs into a remote service using the same user credentials (such as id and password). By way of another example, a user can specify via a user interface presented by the synchronization service 104 when the user is logged into synchronization service 104 with a particular computing device, whether application settings are to be roamed with that particular computing device.
[0023] It should be noted that although the discussions herein include reference to items being synchronized across computing devices, items can also be synchronized across different portions of the same computing device. For example, a folder of a first user of a computing device 102 (e.g., the folder users\userl\photos) and a folder of a second user of the same computing device 102 (e.g., the folder users\user2\pictures) can both be stored on the same storage device 122 of the same computing device 102. The discussions herein referring to synchronizing items across computing devices apply analogously to synchronizing items across different portions of the same computing device.
[0024] It should also be noted that items can be synchronized across computing devices regardless of the user that is logged into the computing device. A synchronized item can be changed by different users that log into a remote service using different user credentials. The items that are identified as to be synchronized are synchronized regardless of the user that makes a change to an item.
[0025] A variety of different items can be synchronized across computing devices 102. Information or data that can be stored or otherwise maintained on storage device 122 can be items synchronized across computing devices 102. In one or more embodiments, the
items synchronized across computing devices 102 include both files and folders (also referred to as directories). One or more other folders and/or files can be stored in a folder. Other types of information or data can also be items synchronized across computing devices 102, such as configuration values or settings. These other types of information or data need not be a file or folder, but can be information or data that is, for example, maintained as a data structure in memory during operation of a computing device 102. Items that are synchronized across computing devices 102 are also referred to as synchronized items.
[0026] The particular items that are synchronized can be identified in different manners. In one or more embodiments, one or more particular folders on storage device 122 are selected for synchronization. These one or more particular folders can include a default folder, and/or folders selected by a user (or other component or module of computing device 102). Files and/or other folders stored within these one or more folders are synchronized items. Alternatively, the particular items that are synchronized can be identified in other manners, such as particular files selected by a user or administrator, all files and/or folders on storage device 122, all files and/or folders in a particular partition or volume of storage device 122, and so forth.
[0027] Synchronization feed module 114 monitors synchronized items on the particular computing device 102 in which it is included to identify when a synchronized item is changed. Synchronization feed module 114 can monitor the synchronized items in a variety of different manners. For example, module 114 can maintain a record of the synchronized items, the record including, for each synchronized item, an identifier of the synchronized item, optionally a version number of the synchronized item, and a hash value of the synchronized item generated by applying a variety of different conventional hash functions to the synchronized item. Module 114 can check the synchronized items at regular or irregular intervals, checking whether one or more of the synchronized items has been changed since the last time the synchronized items were checked. This checking can be performed by, for example, generating a new hash value for the synchronized item and comparing the new hash value to the hash value for the synchronized item in the record. If the new hash value and the hash value for the synchronized item in the record are different, then a change to the synchronized item is identified.
[0028] Alternatively, rather than maintaining a record with hash values for each synchronized item, the record can include timestamps for each synchronized item. The timestamp of a synchronized item is the time when the synchronized item was last
changed. The timestamp can be recorded, for example, by the application changing the synchronized item or an operating system of the computing device. Module 114 can check the synchronized items at regular or irregular intervals, checking whether one or more of the synchronized items has been changed since the last time the synchronized items were checked. This checking can be performed by, for example, comparing the current timestamp of the synchronized item to the timestamp of the synchronized item in the record. If the current timestamp of the synchronized item and the timestamp of the synchronized item in the record are different, then a change to the synchronized item is identified.
[0029] Alternatively, changes to synchronized items can be identified in different manners. For example, module 114 can be notified by another component or module (e.g., by an application making the change, by an operating system running on the same computing device as the module 114, etc.) when a synchronized item is changed.
[0030] Synchronization feed module 114 communicates, to each of the synchronization feed modules 114 of the other computing devices 102 across which items are synchronized, a notification indicating each changed synchronized item that has been identified. This indication includes the information maintained in the record by module 114 (e.g., an identifier of the synchronized item, a version number of the synchronized item, and a hash value and/or timestamp of the synchronized item). The changed synchronized item is also communicated to each of the synchronization feed modules of the other computing devices 102. Accordingly, each time a change to a synchronized item is identified by a synchronization module 1 12 of one computing device 102, the changed synchronized item is communicated to the synchronization modules 112 of the other computing devices 102 across which the item is synchronized. Alternatively, a synchronization module 112 can store one or more changes to one or more synchronized items for an amount of time, and this amount of time can vary. For example, this amount of time can be a particular number of minutes, a particular number of hours, an amount of time that lapses until at least a threshold number of changes have been stored, an amount of time that lapses until some other event occurs (e.g., the computing device that includes the synchronization module 112 logs into a remote service, an amount of bandwidth of the computing device that includes the synchronization module 112 or a network that the computing device is coupled to becomes free, etc.), and so forth.
[0031] In other embodiments, both the indication of the changed synchronized item and the changed synchronized item itself need not be communicated to the other
computing devices 102 across which the item is synchronized. For example, just the changed synchronized item can be sent (the item itself serving as the indication of the changed synchronized item). By way of another example, the indication of the changed synchronized item can be sent, but the changed synchronized item itself not sent until requested by another computing device (e.g., requested by the computing device that is a resolver of a conflict as discussed in more detail below).
[0032] In one or more embodiments, synchronization feed module 114 maintains a history or other record of changes to synchronized items and the resolutions of conflicts, regardless of which computing device the change was made on. This history allows, for example, a user or other component or module to view and identify past changes to synchronized items that have been made and how past conflicts were resolved. This history or record can include a variety of different numbers of changes and conflict resolutions. For example, only the most recent change and conflict resolution can be maintained in the record, a larger number of changes (e.g., 100) and conflict resolutions can be maintained in the record, changes and conflict resolutions that occupy a particular amount of space (e.g., 1 Megabyte) can be maintained, and so forth.
[0033] Each computing device 102 maintains a copy of the synchronized item. Accordingly, the synchronization supported by the automatic synchronization conflict resolution discussed herein is also referred to as a multi master replication system. A copy of the synchronized item can also be, but need not be, maintained by synchronization service 104. Copies of synchronized items that lose during the conflict resolution as discussed in more detail below can also be maintained by synchronization service 104. For example, a copy of a synchronized item that is not kept according to the rules discussed in more detail below can still be maintained by synchronization service 104 (e.g., to allow a user to rollback or undue a change automatically made using the techniques discussed herein).
[0034] Synchronization conflicts can arise between two synchronized items. A synchronization conflict occurs when two or more copies of a synchronized item are changed and indications of those changes are communicated via the synchronization feed modules 114 at approximately the same time. A synchronization conflict also occurs when a synchronized item that is a folder is changed and a synchronized item that is a file or other folder within that folder is also changed, and indications of those changes are communicated via the synchronization feed modules 114 at approximately the same time. Synchronization feed module 114 determines that a conflict is present when module 1 14
determines, based on the indications of changed synchronized items it has received from other modules 114 as well as the changed synchronized items it has identified, that there are two or more changes to the same synchronized item (or to a synchronized item within another synchronized item) without an indication that the conflict has been resolved.
[0035] Upon receipt of an indication of a changed synchronized item for which there is no conflict, synchronization feed module 114 replaces the copy of that synchronized item in storage device 122. Synchronization feed module 114 also updates its record for the synchronized item to reflect the hash value or timestamp of the changed synchronized item. This timestamp refers to the timestamp of when the item was changed at the computing device on which the change was originally made.
[0036] As each synchronization feed module 114 is communicating indications of its changed synchronized items as well as copies of the changed synchronized items, each computing device 102 across which the items are synchronized has a copy of each of the conflicting changed synchronized items. Generally, one of the computing devices 102 across which the items are synchronized becomes the resolver for the conflict, and resolves the conflict based on a set of rules. The resolver then communicates the resolution of the conflict to the other computing devices 102 across which the items are synchronized.
[0037] When a conflict occurs, each synchronization feed module 114 identifies a default winner, which is the copy of the synchronized item that is initially identified as the copy of the synchronized item that is to be used. The default winner can be identified in a variety of different manners. In one or more embodiments, the default winner is identified as the copy of the synchronized item (or the indication of the changed synchronized item) having the most recent timestamp. Alternatively, different criteria can be used, such as the copy of the synchronized item (or the indication of the changed synchronized item) having the least recent timestamp, the synchronized item with the hash value that is the largest value, the synchronized item with the numerically smallest hash value, the synchronized item coming from the computing device 102 which has been declared a primary device (or master device, or default winning device), and so forth. Although the default winner can be identified in different manners, the different synchronization feed modules 1 14 typically identify the default winner so that each module 114 identifies the same winner. The copies of the synchronized items that are not the default winner are each a default loser.
[0038] The default winner is displayed or otherwise presented to the user as the correct version of the synchronized item, although this can change after applying the set of rules 120 as discussed below. The default losers are maintained separately, such as in a separate folder or portion of storage device 122. However, each computing device 102 across which the items are synchronized has a copy of each of the conflicting changed synchronized items, including the default winner and the default losers. The default losers are thus available on the computing devices 102, although are not typically displayed as being available to the users of computing devices 102. Alternatively, one or more indications of these default losers can be displayed or otherwise presented to the users of computing devices 102.
[0039] Alternatively, a default winner need not be identified to users of computing devices 102. Rather, multiple copies of the synchronized items can be displayed to the user as the correct version (but optionally with an indication that there is a conflict).
[0040] In other embodiments, the default winner can be identified in different manners by different modules (which can result in different modules identifying different default winners). However, a single computing device 102 becomes the resolver of the conflict as discussed in more detail below. Thus, the different synchronization modules 112 can represent conflicts in different manners (including identifying default winners in different manners), while a single computing device becomes the resolver for the conflict. Accordingly, the particular item that is the default winner can vary based on the computing device that becomes the resolver for the conflict.
[0041] One of the computing devices 102 across which items are synchronized becomes the resolver for the conflict. Although multiple computing devices 102 determine the copy of the synchronized item that is the default winner, just one computing device 102 becomes the resolver for the conflict. Having a single resolver for the conflict removes the possibility of a cascading set of conflicts resulting from multiple computing devices 102 resolving the conflict concurrently. The resolver for the conflict can be determined in a variety of different manners, as long as just one computing device 102 becomes the resolver for the conflict.
[0042] Although there is a single resolver for the conflict, the other computing devices 102 across which the items are synchronized attempt, at regular or irregular intervals, to become the resolver for the conflict. Such attempts continue until the conflict is resolved. Thus, if the computing device 102 that is initially the resolver of the conflict ceases to become the resolver (e.g., due to a failure of the computing device, the computing device
being powered down or logged out of a remote service, etc.), another computing device 102 can become the resolver and finish resolving the conflict.
[0043] In each computing device 102, a resolver identification module 116 determines whether that computing device 102 is the resolver for the conflict. In one or more embodiments, each resolver identification module 116 attempts to write a particular value as a token indicating the module 116 is attempting to resolve the conflict. The resolver identification modules 116 use an optimistic concurrency technique to verify that if multiple resolver identification modules 116 attempt to write to that token at approximately the same time, just one of the modules 116 will succeed in writing to that token. The computing device 102 that includes the resolver identification module 116 that is successful in writing to the token is the resolver for the conflict.
[0044] Alternatively other techniques can be used to identify which computing device 102 is the resolver for the conflict. For example, a pre-defmed ordering of computing devices can be followed, such as selecting the computing device with the lowest (or alternatively highest) numerical value device identifier as the resolver. By way of another example, synchronization service 104 can facilitate identifying which computing device 102 is the resolver for the conflict, such as by maintaining a token that is requested by a resolver identification module 116 in order to become the resolver for the conflict. Synchronization service 104 provides the token to only one resolver identification module 116 at a time, and does not provide the token to another module 1 16 until the token has been returned. The computing device 102 that includes the resolver identification module 116 that has the token is the resolver of the conflict. By way of yet another example a user selection of the one of the computing devices 102 that is to be the resolver for the conflict can be received.
[0045] Fig. 2 is a block diagram illustrating an example state diagram 200 used in identifying which computing device is the resolver for a synchronization conflict in accordance with one or more embodiments. State diagram 200 is used by each resolver identification module (e.g., module 116 of Fig. 1). State diagram 200 includes an initial state 202, a pending state 204, a resolve state 206, and an idle state 208. With state diagram 200, the resolver identification module uses a resolver value. The resolver value is a value that can be read from and written to by the resolver identification modules of the different computing devices. This resolver value is, for example, the token value when using optimistic concurrency.
[0046] Initial state 202 is the initial state of the resolver identification module, and is the state of the resolver identification module when the resolver identification module begins running. If the synchronization feed module (e.g. module 112 of Fig. 1) determines there is a conflict, then the resolver identification module records the current resolver value and transitions to pending state 204. However, if the synchronization feed module determines there is no conflict, then the resolver identification module transitions to the idle state 208. When in idle state 208, the resolver identification module remains in idle state 208 until the synchronization feed module determines there is a conflict, at which point the resolver identification module records the current resolver value and transitions to pending state 204.
[0047] In pending state 204, the resolver identification module attempts to become the resolver of the conflict by attempting to write a new resolver value. While in pending state 204, at regular or irregular intervals, the resolver identification module also reads the current resolver value and compares the read value with the resolver value that was previously recorded. In one or more embodiments, this interval is a time 2t, where values of t can vary (e.g., 30 seconds, one minute, one hour, five hours, etc.). If the values are the same and a conflict still exists, then the resolver identification module remains in pending state 204. However, if the values are not the same and a conflict still exists, then the resolver identification module attempts to write a new resolver value. The new resolver value that the resolver attempts to write is, for example, a combination (e.g., a concatenation) of an identifier of the computing device that includes the resolver identification module and a globally unique identifier (GUID). If the attempted write fails, then the resolver identification module remains in the pending state 204 and records the current resolver value for use in comparison after the next interval. However, if the attempted write succeeds, then the resolver identification module transitions to the resolve state 206. While in pending state 204, if a conflict no longer exists then the resolver identification module transitions to idle state 208.
[0048] When the resolver identification module is in resolve state 206, the computing device that includes that resolver identification module is the resolver of the conflict. A conflict resolution module (e.g., module 118 of Fig. 1) of the computing device resolves the conflicts based on a set of rules as discussed in more detail below. The resolver identification module remains in resolve state 206, resolving the conflicts and writing a new resolver value after each conflict is resolved, or at regular or irregular intervals. This regular or irregular interval is less than the interval at which the resolver values are
compared when in pending state 204, and in one or more embodiments this interval is at time t. If the writing of the new resolver value fails, or an error is otherwise encountered, the resolver identification module records the current resolver value and transitions to pending state 204. After the conflicts are resolved the resolver identification module transitions to idle state 208.
[0049] Returning to Fig. 1, the conflict is resolved by the conflict resolution module 118 of the computing device 102 that is the resolver of the conflict. This resolution is performed based on a set of one or more rules 120. Different types of conflicts can arise, such as conflicts involving different changes to the same file, conflicts involving a change and deletion of a file, conflicts involving a change of a file and a deletion of a folder in which the file is stored, and so forth. Additionally, changes to files can be changes to the content of the file (e.g., the file data itself), or alternatively to metadata associated with the file (e.g., a play count or user rating associated with a music file).
[0050] Conflict resolution module 118 identifies the type of conflict that has arisen, and identifies a rule from the set of rules 120 that applies to that type of conflict. The identified rule specifies how the conflict is to be resolved, and conflict resolution module 118 resolves the conflict in accordance with the identified rule.
[0051] A variety of different changes to a synchronized item can potentially result in a conflict. These changes can include, for example, renaming of an item, deletion of an item, changing the content of an item, changing the metadata associated with an item, and so forth. Table I lists examples of types of changes to synchronized items that can potentially result in a conflict. It is to be appreciated that the changes in Table I are only examples, and that other types of changes can also potentially result in a conflict.
Table I
[0052] Based on these different changes, a set of rules is applied to resolve a conflict. A variety of different rules can be applied. Table II lists examples of rules that can be applied to resolve a conflict. It is to be appreciated that the rules in Table II are only examples, and that other rules can alternatively be applied. In one or more embodiments, the rules in Table II are checked in their order (e.g., rule 1 first, rule 2 second, and so forth), and as soon as a rule that applies is identified that rule is used to resolve the conflict.
Table II
[0053] As can be seen from the example rules in Table II, a variety of different rules can be applied to obtain a variety of different results. The results of applying a rule can be keeping one of the versions of the synchronized item (e.g., the item that wins in the rules of Table II). Merging of two synchronized items can also be the result in some situations. Merging of the two synchronized items refers to combining the changes from the two synchronized items so that the changes in both versions are kept. In one or more embodiments, conflict resolution module 1 18 is configured with information indicating which items can be merged and under what circumstances those items can be merged. Module 118 can be configured with this information by, for example, a developer or administrator of module 118. For example, module 1 18 can be configured with an indication that metadata that is a multi instance value (e.g., names of individuals tagged in photo files) can be merged together by keeping the multiple values of the instance, but metadata that is a single instance value (e.g., a rating of a music file) cannot be merged because only one value can be maintained. By way of another example, module 1 18 can
be configured with an indication that a file rename can be merged with the editing of the file content by keeping both the renamed file and the edits to the file content.
[0054] In situations where both versions of a file (the default winner and the default loser) are kept, an indication of both versions is presented by the computing devices 102. This indication can be, for example, a particular naming convention that indicates there are two versions of the synchronized item, such as including a file named "foo.docx" and a file named "fooA.docx", or each file having a name that includes a timestamp of when the file was changed. Alternatively, indications of both versions can be displayed or otherwise presented by the computing devices 102 in different manners, such as by a dialog box indicating the conflict, a flag or other indicator of the conflict, and so forth.
[0055] Additionally, in one or more embodiments an additional component or module can be invoked by conflict resolution module 118 to assist a user in combining or selecting from both versions of a synchronized item. For example, if a conflict is changes to a word processing document, merge functionality of a word processing application can be invoked to create a merged document that can be displayed to the user. This merged document is a document that includes and identifies the changes from both versions of the synchronized item (in accordance with techniques used by the word processing application to provide the merge functionality). Similar merging or combining functionality of other applications can also be invoked.
[0056] Fig. 3 illustrates an example diagram 300 identifying the results of resolving synchronization conflicts in accordance with one or more embodiments. In diagram 300, the type of change of the default winner is shown along (vertical) axis 302, while the type of change of the default loser is shown along (horizontal) axis 304. The intersection of the two types of changes in diagram 300 is a cell that identifies whether there is a conflict, and if so what the resolution of that conflict is. The value "M" indicates that the copies of the synchronized item are merged together. The value "W" indicates that the default winner is kept and the default loser is discarded or ignored. The value "S" indicates that the default winner and default loser are swapped, resulting in what was the default loser being kept and what was the default winner being discarded or ignored. The value "B" indicates that both the default winner and the default loser are kept. The value "O" indicates that the file is orphaned, so the folder is kept but includes a single file (which is the file with which the conflict existed). The value "N" indicates there is no conflict.
[0057] A number is included in some of the cells in diagram 300. This number refers to a particular rule (from Table II discussed above) that is applied to achieve the indicated result.
[0058] As an example, considering diagram 300, if the default winner is a file delete and the default loser is a file meta data edit (single instance value), then the intersecting cell (with a value of IS) indicates that, according to rule 1 of Table II, the edited file is kept rather than deleted. By way of another example, if the default winner is a file content edit and the default loser is a file rename, then the intersecting cell (with a value of 3M) indicates that, according to rule 3 of Table II, the items are merged together so that both the file content edits and the file renaming are kept.
[0059] It should be noted that three or more synchronized items can conflict with one another. For example, three or more copies of a particular synchronized item can be changed approximately concurrently. Such conflicts are resolved one by one, with one of the synchronized items being the default winner as discussed above, and the remaining synchronized items being default losers. The resolver then resolves the conflicts one by one, comparing the default winner to one of the default losers and resolving the conflict between those two synchronized items based on the set of rules as discussed above. It should be noted that during this process, the particular synchronized item that is the default winner can change as a result of applying one or more of the rules. The same computing device can be the resolver for the multiple conflicts of the synchronized items, or alternatively different computing devices can be the resolver for different conflicts.
[0060] It should also be noted that synchronized items can be changed by the same user or alternatively different users. Additionally, computing devices via which the changes are made can be owned or managed by different user accounts (used to log into the computing device and/or a remote service). Conflicts are resolved as discussed above regardless of whether the same or different users changed the synchronized item, and regardless of the user account that owns or manages the different computing devices.
[0061] In one or more embodiments, conflicts can be resolved at a variety of different granularities. For example, conflicts can be resolved on a per-file basis, on a per-folder basis, across multiple folders within a specified folder, and so forth. Different conflict resolution modules (e.g., modules 118 of Fig. 1) can be included on a computing device 102 to resolve conflicts at these different granularities. Accordingly, multiple different conflict resolution modules on a computing device 102 can be running concurrently to resolve conflicts for different synchronized items. Furthermore, different conflict
resolution modules on different computing devices 102 can be running concurrently to concurrently resolve conflicts for different synchronized items.
[0062] Fig. 4 is a flowchart illustrating an example process 400 for automatic synchronization conflict resolution in accordance with one or more embodiments. Process 400 is carried out by a device, such as a computing device 102 of Fig. 1, and can be implemented in software, firmware, hardware, or combinations thereof. Process 400 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts. Process 400 is an example process for automatic synchronization conflict resolution; additional discussions of automatic synchronization conflict resolution are included herein with reference to different figures.
[0063] In process 400, a notification of each type of change to a synchronized item is sent to the other computing devices (act 402). These other computing devices are the other devices across which the item is synchronized. A variety of different types of changes can be made, as discussed above.
[0064] A notification of a change to a synchronized item by another device is also received (act 404). The changed synchronized item is also received from the other device as discussed above.
[0065] A check is made as to whether there is a conflict with the received change (act 406). A conflict can arise, for example, as a result of multiple different changes of which notification was received in act 404, or as a result of a change made by the device implementing process 400 and a change of which notification was received in act 404.
[0066] If there is no conflict with the received change, then the received change is incorporated into the local copy of the synchronized item (act 408). Thus, any changes made to the synchronized item on another device are incorporated into the synchronized item on the computing device implementing process 400.
[0067] However, if there is a conflict with the received change, then the device implementing process 400 attempts to become the resolver for the conflict (act 410). The device can attempt to become the resolver for the conflict in a variety of different manners as discussed above.
[0068] Process 400 then proceeds based on a check of whether the attempt to become the resolver is successful (act 412). If the attempt to become the resolver is not successful, then process 400 returns to act 406. Eventually, the device will be successful in its attempt to become the resolver, or the conflict will no longer exist (e.g., due to another device having become the resolver and resolving the conflict).
[0069] If the attempt to become the resolver is successful, then rule-based conflict resolution is automatically performed to resolve the conflict (act 414). A variety of different rules can be applied, as discussed above.
[0070] A notification of the resolution is sent to the other computing devices (act 416). This notification can take different forms, such as sending an indication that the conflict is resolved and one or more actions the other computing devices are to take regarding a synchronized item (e.g., rename an item, delete an item, etc.), sending an indication that the conflict is resolved and a copy of the synchronized item (e.g., a merged filed) that each of the other computing devices is to store as their copy of the synchronized item, and so forth. These other computing devices are the other devices across which the item is synchronized. This notification is received by the other devices and incorporated into their local copies of the synchronized item. Process 400 then returns to act 404, where additional notifications of changes to synchronized items can be received.
[0071] Fig. 5 is a flowchart illustrating an example process 500 for using a set of rules to automatically resolve a synchronization conflict in accordance with one or more embodiments. Process 500 is carried out by a device, such as a computing device 102 of Fig. 1, and can be implemented in software, firmware, hardware, or combinations thereof. Process 500 can implement, for example, act 414 of Fig. 4. Process 500 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts. Process 500 is an example process for using a set of rules to automatically resolve a conflict; additional discussions of using a set of rules to automatically resolve a conflict are included herein with reference to different figures.
[0072] In process 500, a check is made as to whether the synchronization conflict is an edit-delete conflict (act 502). An edit-delete conflict is a conflict in which one synchronized item is edited and another synchronized item is deleted. The edit and delete can be for different copies of the same synchronized item, or alternatively one of the edit and delete can be to a particular folder and the other of the edit and delete can be to a file or other folder included in that particular folder.
[0073] If the synchronization conflict is an edit-delete conflict, then the synchronization item that is the edit is kept (act 504). The synchronization item that is the delete is ignored and discarded. This result is the application of rule 1 of Table II discussed above.
[0074] If the synchronization conflict is not an edit-delete conflict, then a check is made as to whether the synchronization conflict is an add-delete conflict (act 506). An
add-delete conflict is a conflict in which one synchronized item is added and another synchronized item is deleted. The add and delete can be for different copies of the same synchronized item, or alternatively one of the add and delete can be to a particular folder and the other of the add and delete can be to a file or other folder included in that particular folder.
[0075] If the synchronization conflict is an add-delete conflict, then the synchronization item that is the add is kept (act 508). The synchronization item that is the delete is ignored and discarded. This result is the application of rule 2 of Table II discussed above.
[0076] If the synchronization conflict is not an add-delete conflict, then a check is made as to whether the synchronization conflict is an edit-edit conflict (act 10). An edit- edit conflict is a conflict in which two synchronized items are edited. The edits can be for different copies of the same synchronized item, or alternatively one of the edits can be to a particular folder and the other of the edits can be to a file or other folder included in that particular folder.
[0077] If the synchronization conflict is an edit-edit conflict, then a check is made as to whether the two synchronization items can be merged (act 512). If the two synchronization items can be merged, then the two synchronization items are merged (act 514). However, if the two synchronization items cannot be merged, then both of the synchronization items are kept (act 516). Acts 514 and 516 are the result of the application of rule 3 of Table II discussed above.
[0078] If the synchronization conflict is not an edit-edit conflict, then a check is made as to whether the synchronization conflict is a delete-delete conflict (act 518). A delete- delete conflict is a conflict in which two synchronized items are deleted. The deletes can be for different copies of the same synchronized item, or alternatively one of the deletes can be to a particular folder and the other of the deletes can be to a file or other folder included in that particular folder.
[0079] If the synchronization conflict is a delete-delete conflict, then the two synchronization items are merged (act 514). This result is the application of rule 4 of Table II discussed above.
[0080] If the synchronization conflict is not a delete-delete conflict, then a check is made as to whether the synchronization conflict is a rename-rename conflict (act 520). A rename-rename conflict is a conflict in which two synchronized items are renamed. The renames can be for different copies of the same synchronized item, or alternatively one of
the renames can be to a particular folder and the other of the renames can be to a file or other folder included in that particular folder.
[0081] If the synchronization conflict is a rename-rename conflict, then the synchronized item that is the most recent change (e.g., has the most recent timestamp) is kept (act 522). This result is the application of rule 5 of Table II discussed above.
[0082] If the synchronization conflict is not a rename-rename conflict, then both versions of the synchronization item are kept (act 516). This result is the application of rule 6 of Table II discussed above.
[0083] Fig. 6 illustrates an example computing device 600 that can be configured to implement the automatic synchronization conflict resolution in accordance with one or more embodiments. Computing device 600 can be, for example, any of computing devices 102 of Fig. 1, can be a computing device implementing at least part of synchronization service 104 of Fig. 1.
[0084] Computing device 600 includes one or more processors or processing units 602, one or more computer readable media 604 which can include one or more memory and/or storage components 606, one or more input/output (I/O) devices 608, and a bus 610 that allows the various components and devices to communicate with one another. Computer readable media 604 and/or one or more I/O devices 608 can be included as part of, or alternatively may be coupled to, computing device 600. Bus 610 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, a processor or local bus, and so forth using a variety of different bus architectures. Bus 610 can include wired and/or wireless buses.
[0085] Memory/storage component 606 represents one or more computer storage media. Component 606 can include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). Component 606 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so forth).
[0086] The techniques discussed herein can be implemented in software, with instructions being executed by one or more processing units 602. It is to be appreciated that different instructions can be stored in different components of computing device 600, such as in a processing unit 602, in various cache memories of a processing unit 602, in other cache memories of device 600 (not shown), on other computer readable media, and
so forth. Additionally, it is to be appreciated that the location where instructions are stored in computing device 600 can change over time.
[0087] One or more input/output devices 608 allow a user to enter commands and information to computing device 600, and also allows information to be presented to the user and/or other components or devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, and so forth.
[0088] Various techniques may be described herein in the general context of software or program modules. Generally, software includes routines, programs, objects, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. An implementation of these modules and techniques may be stored on or transmitted across some form of computer readable media. Computer readable media can be any available medium or media that can be accessed by a computing device. By way of example, and not limitation, computer readable media may comprise "computer storage media" and "communications media."
[0089] "Computer storage media" include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
[0090] "Communication media" typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism. Communication media also include any information delivery media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
[0091] Generally, any of the functions or techniques described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations. The terms "module" and "component" as used herein generally represent software, firmware, hardware, or combinations thereof. In the case of a software implementation, the module or component represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer readable media, further description of which may be found with reference to Fig. 6. The features of the automatic synchronization conflict resolution described herein are platform-independent, meaning that the techniques can be implemented on a variety of commercial computing platforms having a variety of processors.
[0092] Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Claims
What is claimed is: 1. A method implemented in a first computing device, the method comprising:
Determining there is a synchronization conflict between a change to a first synchronized item at the first computing device and a change to a second synchronized item at a second computing device;
performing, in response to determining there is a synchronization conflict, rule- based conflict resolution to automatically resolve the synchronization conflict, the rule- based conflict resolution being based at least in part on a type of the change to the first synchronized item, a type of the change to the second synchronized item, and a set of multiple rules; and
sending a notification of the rule-based conflict resolution to the second computing device.
2. A method as recited in claim 1, further comprising:
attempting, in response to determining there is a synchronization conflict, to become a resolver for the synchronization conflict; and
performing the rule-based conflict resolution and sending the notification only if the attempt to become the resolver for the synchronization conflict is successful.
3. A method as recited in claim 2, wherein the first computing device attempts to become the resolver for the synchronization conflict at a same time as the second computing device attempts to become the resolver for the synchronization conflict, and only one of the first computing device and the second computing device becomes the resolver for the synchronization conflict.
4. A method as recited in claim 1 , further comprising maintaining a record of changes to synchronized items, including the change to the first synchronized item and the change to the second synchronized item, that have been made at the first computing device or at the second computing device.
5. A method as recited in claim 1, wherein the determining further comprises determining there is a synchronization conflict between the change to the first synchronized item and changes to one or more additional synchronized items at one or more additional computing devices, and further comprising performing the rule-based conflict resolution one or more additional times, each time to resolve a synchronization conflict with the change to one of the one or more additional synchronized items.
6. A method as recited in claim 1, wherein the synchronization conflict arises from the change made to the first synchronized item by a first user of the first computing device, and the change made to the second synchronized item by a second user of the second computing device, wherein the first user and the second user are different users.
7. A method as recited in claim 1 , wherein the first synchronized item and the second synchronized item comprise different copies of a same file.
8. A method as recited in claim 1 , wherein the first synchronized item and the second synchronized item comprise folders.
9. A method as recited in claim 1, wherein one of the first synchronized item and the second synchronized item comprises a file, and the other of the first synchronized item and the second synchronized item comprises a folder.
10. A method as recited in claim 1 , wherein the first synchronized item and the second synchronized item comprise different copies of data maintained in a data structure of memory of the first computing device and the second computing device.
11. A method as recited in claim 1, wherein the performing rule-based conflict resolution comprises automatically resolving the synchronization conflict by applying a rule indicating that the first synchronized item and the second synchronized item are to be merged together into one synchronized item.
12. A method as recited in claim 1, wherein the performing rule-based conflict resolution comprises automatically resolving the synchronization conflict by applying a rule indicating that one of the first synchronized item and the second synchronized item is to be kept and that the other of the first synchronized item and the second synchronized item is to be discarded.
13. A method as recited in claim 1, wherein the performing rule-based conflict resolution comprises automatically resolving the synchronization conflict by applying a rule indicating that both the first synchronized item and the second synchronized item are to be kept.
14. A first computing device of multiple computing devices, the first computing device comprising:
a processor; and
one or more computer readable media having stored thereon multiple instructions that, when executed by the processor, cause the processor to:
determine that a synchronization conflict is present between a change to a first synchronized item at the first computing device and a change to a second synchronized item at a second computing device of the multiple computing devices;
attempt to become a resolver for the synchronization conflict, wherein one of the first computing device or the second computing device becomes the resolver for the synchronization conflict;
if the first computing device does not become the resolver for the synchronization conflict, then incorporate into the first synchronized item a resolution of the synchronization conflict received from the resolver for the synchronization conflict; and
if the first computing device does become the resolver for the synchronization conflict, then perform rule-based conflict resolution to resolve the synchronization conflict.
15. A first computing device as recited in claim 14, wherein to perform the rule-based conflict resolution is to:
if the synchronization conflict is an edit-delete conflict, then keep the one of the first and second synchronized items that is an edit and discard the one of the first and second synchronized items that is a delete, if the synchronization conflict is an add-delete conflict, then keep the one of the first and second synchronized items that is an add and discard the one of the first and second synchronized items that is a delete,
if the synchronization conflict is a file edit-edit conflict, then merge the first and second synchronized items if the first and second synchronized items can be merged, otherwise keep both the first and second synchronized items,
if the synchronization conflict is a delete-delete conflict, then merge the first and second synchronized items,
if the synchronization conflict is a rename-rename conflict, then keep the one of the first and second synchronized items that is a most recent change, and
otherwise keep both the first and second synchronized items.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP11751213.7A EP2542980A4 (en) | 2010-03-02 | 2011-03-01 | Automatic synchronization conflict resolution |
CN201180011793.1A CN102770854B (en) | 2010-03-02 | 2011-03-01 | Automatic synchronization Conflict solving |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/715,726 | 2010-03-02 | ||
US12/715,726 US8572022B2 (en) | 2010-03-02 | 2010-03-02 | Automatic synchronization conflict resolution |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2011109416A2 true WO2011109416A2 (en) | 2011-09-09 |
WO2011109416A3 WO2011109416A3 (en) | 2011-12-15 |
Family
ID=44532174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2011/026711 WO2011109416A2 (en) | 2010-03-02 | 2011-03-01 | Automatic synchronization conflict resolution |
Country Status (4)
Country | Link |
---|---|
US (2) | US8572022B2 (en) |
EP (1) | EP2542980A4 (en) |
CN (1) | CN102770854B (en) |
WO (1) | WO2011109416A2 (en) |
Cited By (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2757491A1 (en) * | 2013-01-17 | 2014-07-23 | Box, Inc. | Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform |
US8868574B2 (en) | 2012-07-30 | 2014-10-21 | Box, Inc. | System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment |
US8892679B1 (en) | 2013-09-13 | 2014-11-18 | Box, Inc. | Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform |
US8914900B2 (en) | 2012-05-23 | 2014-12-16 | Box, Inc. | Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform |
WO2015006248A1 (en) * | 2013-07-08 | 2015-01-15 | Dropbox, Inc. | Structured content item synchronization |
US8965840B2 (en) | 2010-03-02 | 2015-02-24 | Microsoft Technology Licensing, Llc | Automatic synchronization conflict resolution |
US8990151B2 (en) | 2011-10-14 | 2015-03-24 | Box, Inc. | Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution |
US8990307B2 (en) | 2011-11-16 | 2015-03-24 | Box, Inc. | Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform |
US9015601B2 (en) | 2011-06-21 | 2015-04-21 | Box, Inc. | Batch uploading of content to a web-based collaboration environment |
US9021099B2 (en) | 2012-07-03 | 2015-04-28 | Box, Inc. | Load balancing secure FTP connections among multiple FTP servers |
US9019123B2 (en) | 2011-12-22 | 2015-04-28 | Box, Inc. | Health check services for web-based collaboration environments |
US9027108B2 (en) | 2012-05-23 | 2015-05-05 | Box, Inc. | Systems and methods for secure file portability between mobile applications on a mobile device |
US9063912B2 (en) | 2011-06-22 | 2015-06-23 | Box, Inc. | Multimedia content preview rendering in a cloud content management system |
US9098474B2 (en) | 2011-10-26 | 2015-08-04 | Box, Inc. | Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience |
US9117087B2 (en) | 2012-09-06 | 2015-08-25 | Box, Inc. | System and method for creating a secure channel for inter-application communication based on intents |
US9135462B2 (en) | 2012-08-29 | 2015-09-15 | Box, Inc. | Upload and download streaming encryption to/from a cloud-based platform |
US9197718B2 (en) | 2011-09-23 | 2015-11-24 | Box, Inc. | Central management and control of user-contributed content in a web-based collaboration environment and management console thereof |
US9195636B2 (en) | 2012-03-07 | 2015-11-24 | Box, Inc. | Universal file type preview for mobile devices |
US9195519B2 (en) | 2012-09-06 | 2015-11-24 | Box, Inc. | Disabling the self-referential appearance of a mobile application in an intent via a background registration |
US9213684B2 (en) | 2013-09-13 | 2015-12-15 | Box, Inc. | System and method for rendering document in web browser or mobile device regardless of third-party plug-in software |
US9237170B2 (en) | 2012-07-19 | 2016-01-12 | Box, Inc. | Data loss prevention (DLP) methods and architectures by a cloud service |
US9292833B2 (en) | 2012-09-14 | 2016-03-22 | Box, Inc. | Batching notifications of activities that occur in a web-based collaboration environment |
US9311071B2 (en) | 2012-09-06 | 2016-04-12 | Box, Inc. | Force upgrade of a mobile application via a server side configuration file |
US9369520B2 (en) | 2012-08-19 | 2016-06-14 | Box, Inc. | Enhancement of upload and/or download performance based on client and/or server feedback information |
US9396216B2 (en) | 2012-05-04 | 2016-07-19 | Box, Inc. | Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform |
US9396245B2 (en) | 2013-01-02 | 2016-07-19 | Box, Inc. | Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9483473B2 (en) | 2013-09-13 | 2016-11-01 | Box, Inc. | High availability architecture for a cloud-based concurrent-access collaboration platform |
US9495364B2 (en) | 2012-10-04 | 2016-11-15 | Box, Inc. | Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform |
US9507795B2 (en) | 2013-01-11 | 2016-11-29 | Box, Inc. | Functionalities, features, and user interface of a synchronization client to a cloud-based environment |
US9519526B2 (en) | 2007-12-05 | 2016-12-13 | Box, Inc. | File management system and collaboration service and integration capabilities with third party applications |
US9519886B2 (en) | 2013-09-13 | 2016-12-13 | Box, Inc. | Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform |
US9535924B2 (en) | 2013-07-30 | 2017-01-03 | Box, Inc. | Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9535909B2 (en) | 2013-09-13 | 2017-01-03 | Box, Inc. | Configurable event-based automation architecture for cloud-based collaboration platforms |
US9553758B2 (en) | 2012-09-18 | 2017-01-24 | Box, Inc. | Sandboxing individual applications to specific user folders in a cloud-based service |
US9558202B2 (en) | 2012-08-27 | 2017-01-31 | Box, Inc. | Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment |
US9575981B2 (en) | 2012-04-11 | 2017-02-21 | Box, Inc. | Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system |
US9602514B2 (en) | 2014-06-16 | 2017-03-21 | Box, Inc. | Enterprise mobility management and verification of a managed application by a content provider |
US9628268B2 (en) | 2012-10-17 | 2017-04-18 | Box, Inc. | Remote key management in a cloud-based environment |
US9633037B2 (en) | 2013-06-13 | 2017-04-25 | Box, Inc | Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform |
US9652741B2 (en) | 2011-07-08 | 2017-05-16 | Box, Inc. | Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof |
US9665349B2 (en) | 2012-10-05 | 2017-05-30 | Box, Inc. | System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform |
US9691051B2 (en) | 2012-05-21 | 2017-06-27 | Box, Inc. | Security enhancement through application access control |
US9705967B2 (en) | 2012-10-04 | 2017-07-11 | Box, Inc. | Corporate user discovery and identification of recommended collaborators in a cloud platform |
US9712510B2 (en) | 2012-07-06 | 2017-07-18 | Box, Inc. | Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform |
US9729675B2 (en) | 2012-08-19 | 2017-08-08 | Box, Inc. | Enhancement of upload and/or download performance based on client and/or server feedback information |
US9756022B2 (en) | 2014-08-29 | 2017-09-05 | Box, Inc. | Enhanced remote key management for an enterprise in a cloud-based environment |
US9773051B2 (en) | 2011-11-29 | 2017-09-26 | Box, Inc. | Mobile platform file and folder selection functionalities for offline access and synchronization |
US9794256B2 (en) | 2012-07-30 | 2017-10-17 | Box, Inc. | System and method for advanced control tools for administrators in a cloud-based service |
US9792320B2 (en) | 2012-07-06 | 2017-10-17 | Box, Inc. | System and method for performing shard migration to support functions of a cloud-based service |
US9805050B2 (en) | 2013-06-21 | 2017-10-31 | Box, Inc. | Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform |
US9846528B2 (en) | 2015-03-02 | 2017-12-19 | Dropbox, Inc. | Native application collaboration |
US9894119B2 (en) | 2014-08-29 | 2018-02-13 | Box, Inc. | Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms |
US9904435B2 (en) | 2012-01-06 | 2018-02-27 | Box, Inc. | System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment |
US9953036B2 (en) | 2013-01-09 | 2018-04-24 | Box, Inc. | File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9959420B2 (en) | 2012-10-02 | 2018-05-01 | Box, Inc. | System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment |
US9965745B2 (en) | 2012-02-24 | 2018-05-08 | Box, Inc. | System and method for promoting enterprise adoption of a web-based collaboration environment |
US9978040B2 (en) | 2011-07-08 | 2018-05-22 | Box, Inc. | Collaboration sessions in a workspace on a cloud-based content management system |
US10038731B2 (en) | 2014-08-29 | 2018-07-31 | Box, Inc. | Managing flow-based interactions with cloud-based shared content |
US10110656B2 (en) | 2013-06-25 | 2018-10-23 | Box, Inc. | Systems and methods for providing shell communication in a cloud-based platform |
US10200256B2 (en) | 2012-09-17 | 2019-02-05 | Box, Inc. | System and method of a manipulative handle in an interactive mobile user interface |
US10229134B2 (en) | 2013-06-25 | 2019-03-12 | Box, Inc. | Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform |
US10235383B2 (en) | 2012-12-19 | 2019-03-19 | Box, Inc. | Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment |
US10382502B2 (en) | 2016-04-04 | 2019-08-13 | Dropbox, Inc. | Change comments for synchronized content items |
US10452667B2 (en) | 2012-07-06 | 2019-10-22 | Box Inc. | Identification of people as search results from key-word based searches of content in a cloud-based environment |
US10509527B2 (en) | 2013-09-13 | 2019-12-17 | Box, Inc. | Systems and methods for configuring event-based automation in cloud-based collaboration platforms |
US10530854B2 (en) | 2014-05-30 | 2020-01-07 | Box, Inc. | Synchronization of permissioned content in cloud-based environments |
US10554426B2 (en) | 2011-01-20 | 2020-02-04 | Box, Inc. | Real time notification of activities that occur in a web-based collaboration environment |
TWI689181B (en) * | 2016-06-20 | 2020-03-21 | 香港商阿里巴巴集團服務有限公司 | Data processing method and system |
US10725968B2 (en) | 2013-05-10 | 2020-07-28 | Box, Inc. | Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform |
KR20200093569A (en) * | 2017-12-28 | 2020-08-05 | 드롭박스, 인크. | Resolving violations in client synchronization |
US10791186B2 (en) | 2014-04-08 | 2020-09-29 | Dropbox, Inc. | Displaying presence in an application accessing shared and synchronized content |
EP3114566B1 (en) * | 2014-03-01 | 2020-11-18 | Microsoft Technology Licensing, LLC | Shadowing local on-premises information to a cloud-based computing system |
US10846074B2 (en) | 2013-05-10 | 2020-11-24 | Box, Inc. | Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client |
US10866931B2 (en) | 2013-10-22 | 2020-12-15 | Box, Inc. | Desktop application for accessing a cloud collaboration platform |
US10887388B2 (en) | 2014-04-08 | 2021-01-05 | Dropbox, Inc. | Managing presence among devices accessing shared and synchronized content |
US10915492B2 (en) | 2012-09-19 | 2021-02-09 | Box, Inc. | Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction |
US10965746B2 (en) | 2014-04-08 | 2021-03-30 | Dropbox, Inc. | Determining presence in an application accessing shared and synchronized content |
US11032604B2 (en) | 2018-08-31 | 2021-06-08 | Apple Inc. | Management of devices in ad hoc rendering networks |
US11170345B2 (en) | 2015-12-29 | 2021-11-09 | Dropbox Inc. | Content item activity feed for presenting events associated with content items |
US11172038B2 (en) | 2014-04-08 | 2021-11-09 | Dropbox, Inc. | Browser display of native application presence and interaction data |
US11210610B2 (en) | 2011-10-26 | 2021-12-28 | Box, Inc. | Enhanced multimedia content preview rendering in a cloud content management system |
US11232481B2 (en) | 2012-01-30 | 2022-01-25 | Box, Inc. | Extended applications of multimedia content previews in the cloud-based content management system |
US11875028B2 (en) | 2015-12-30 | 2024-01-16 | Dropbox, Inc. | Native application collaboration |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10769686B2 (en) | 2008-01-31 | 2020-09-08 | Bill.Com Llc | Enhanced invitation process for electronic billing and payment system |
US10043201B2 (en) | 2008-01-31 | 2018-08-07 | Bill.Com, Inc. | Enhanced invitation process for electronic billing and payment system |
JP2011221583A (en) * | 2010-04-02 | 2011-11-04 | Seiko Epson Corp | Content providing system, information processing apparatus, content providing method, program, and computer readable recording medium |
US20110252312A1 (en) * | 2010-04-12 | 2011-10-13 | Google Inc. | Real-Time Collaboration in a Hosted Word Processor |
CN102934105B (en) | 2010-04-12 | 2016-10-05 | 谷歌公司 | Cooperation cursor in resident word processor |
US20120036450A1 (en) * | 2010-08-03 | 2012-02-09 | Research In Motion Limited | Method for providing indication of communicatively coupled device |
US9244779B2 (en) | 2010-09-30 | 2016-01-26 | Commvault Systems, Inc. | Data recovery operations, such as recovery from modified network data management protocol data |
US9633354B2 (en) * | 2010-10-27 | 2017-04-25 | Yahoo! Inc. | User feed data delivery |
US8332357B1 (en) | 2011-06-10 | 2012-12-11 | Microsoft Corporation | Identification of moved or renamed files in file synchronization |
US8850516B1 (en) | 2011-06-22 | 2014-09-30 | Emc Corporation | Virtual private cloud that provides enterprise grade functionality and compliance |
US9213718B1 (en) * | 2011-06-22 | 2015-12-15 | Emc Corporation | Synchronized file management across multiple disparate endpoints |
WO2013006985A1 (en) * | 2011-07-12 | 2013-01-17 | General Electric Company | Version control methodology for network model |
US8818983B1 (en) * | 2011-08-31 | 2014-08-26 | Google Inc. | Synchronization of search engines |
US8799853B2 (en) * | 2012-02-17 | 2014-08-05 | National Instruments Corporation | Dynamic synchronization in a target system having multiple programmable hardware elements |
US8819789B2 (en) | 2012-03-07 | 2014-08-26 | Bill.Com, Inc. | Method and system for using social networks to verify entity affiliations and identities |
WO2013148096A1 (en) * | 2012-03-30 | 2013-10-03 | Commvault Systems, Inc. | Informaton management of mobile device data |
US9519631B2 (en) | 2012-03-30 | 2016-12-13 | Microsoft Technology Licensing, Llc | Semantic diff and automerge |
KR101438102B1 (en) * | 2012-07-18 | 2014-09-11 | 안지윤 | Synchronization server for clipboard and synchronization system for clipboard having the same |
US9881017B2 (en) * | 2012-08-03 | 2018-01-30 | Egnyte, Inc. | System and method for event-based synchronization of remote and local file systems |
US20140074783A1 (en) * | 2012-09-09 | 2014-03-13 | Apple Inc. | Synchronizing metadata across devices |
JP6041991B2 (en) * | 2012-09-18 | 2016-12-14 | ノキア テクノロジーズ オーユー | Method, apparatus, and computer program for providing protocol for resolving synchronization collision during synchronization between multiple devices |
US9330131B2 (en) * | 2012-11-28 | 2016-05-03 | The Mathworks, Inc. | Conflict markup tolerant input stream |
US10348821B2 (en) * | 2012-12-21 | 2019-07-09 | Dropbox, Inc. | Prioritizing structural operations and distributing changes in a synced online content management system |
US9069799B2 (en) | 2012-12-27 | 2015-06-30 | Commvault Systems, Inc. | Restoration of centralized data storage manager, such as data storage manager in a hierarchical data storage system |
US9712508B2 (en) * | 2013-03-13 | 2017-07-18 | Intel Corporation | One-touch device personalization |
US10635638B2 (en) | 2013-03-13 | 2020-04-28 | Ivanti Us Llc | Systems, methods and media for deferred synchronization of files in cloud storage client device |
US10115137B2 (en) | 2013-03-14 | 2018-10-30 | Bill.Com, Inc. | System and method for enhanced access and control for connecting entities and effecting payments in a commercially oriented entity network |
US20150012399A1 (en) * | 2013-03-14 | 2015-01-08 | Bill.Com, Inc. | System and Method for Enhanced Access and Control for Modification of Auto-Learned Conflict Resolution and Related Rule and Value Replacements |
US20150012442A1 (en) | 2013-03-14 | 2015-01-08 | Bill.Com, Inc. | Enhanced system and method for scanning and processing of payment documentation |
US10417674B2 (en) | 2013-03-14 | 2019-09-17 | Bill.Com, Llc | System and method for sharing transaction information by object tracking of inter-entity transactions and news streams |
US9665593B2 (en) | 2013-03-28 | 2017-05-30 | International Business Machines Corporation | Dynamically synching elements in file |
US9767210B2 (en) | 2013-03-28 | 2017-09-19 | International Business Machines Corporation | Dynamically enhancing user interface |
US9342531B2 (en) * | 2013-05-09 | 2016-05-17 | Dropbox, Inc. | Managing conflicted copies |
US10565167B2 (en) * | 2013-06-21 | 2020-02-18 | Arroware Industries, Inc. | Method and apparatus for peer-to-peer file authoring |
US10572921B2 (en) | 2013-07-03 | 2020-02-25 | Bill.Com, Llc | System and method for enhanced access and control for connecting entities and effecting payments in a commercially oriented entity network |
CN104427357A (en) * | 2013-09-04 | 2015-03-18 | 中兴通讯股份有限公司 | Language type setting method and device |
US9542467B2 (en) * | 2013-11-18 | 2017-01-10 | International Business Machines Corporation | Efficiently firing mapping and transform rules during bidirectional synchronization |
US9367597B2 (en) * | 2013-11-18 | 2016-06-14 | International Business Machines Corporation | Automatically managing mapping and transform rules when synchronizing systems |
US10402744B2 (en) | 2013-11-18 | 2019-09-03 | International Busniess Machines Corporation | Automatically self-learning bidirectional synchronization of a source system and a target system |
US9336228B2 (en) * | 2013-12-18 | 2016-05-10 | Verizon Patent And Licensing Inc. | Synchronization of program code between revision management applications utilizing different version-control architectures |
US20150178294A1 (en) * | 2013-12-19 | 2015-06-25 | International Business Machines Corporation | Resolving content editing conflicts arising from concurrent drafts |
US20150347966A1 (en) * | 2014-05-31 | 2015-12-03 | Hartford Fire Insurance Company | Meeting management and project management element reconciliation |
WO2016014592A1 (en) | 2014-07-21 | 2016-01-28 | Egnyte, Inc. | System and method for policy based synchronization of remote and local file systems |
US9779073B2 (en) * | 2014-07-29 | 2017-10-03 | Microsoft Technology Licensing, Llc | Digital document change conflict resolution |
US9208167B1 (en) | 2014-09-04 | 2015-12-08 | Edifire LLC | Distributed data synchronization and conflict resolution |
US10437789B2 (en) | 2015-04-10 | 2019-10-08 | Egnyte, Inc. | System and method for delete fencing during synchronization of remote and local file systems |
US11023492B2 (en) * | 2015-05-20 | 2021-06-01 | Guidewire Software, Inc. | Deferred synchronization for work unit-related data |
US11144510B2 (en) | 2015-06-11 | 2021-10-12 | Egnyte, Inc. | System and method for synchronizing file systems with large namespaces |
US10268743B2 (en) | 2015-06-19 | 2019-04-23 | Sap Se | Distributed database transaction protocol |
US10296632B2 (en) * | 2015-06-19 | 2019-05-21 | Sap Se | Synchronization on reactivation of asynchronous table replication |
US10101913B2 (en) | 2015-09-02 | 2018-10-16 | Commvault Systems, Inc. | Migrating data to disk without interrupting running backup operations |
US10824974B2 (en) | 2015-09-11 | 2020-11-03 | International Business Machines Corporation | Automatic subject matter expert profile generator and scorer |
US10521770B2 (en) | 2015-09-11 | 2019-12-31 | International Business Machines Corporation | Dynamic problem statement with conflict resolution |
US10657117B2 (en) | 2015-09-11 | 2020-05-19 | International Business Machines Corporation | Critical situation contribution and effectiveness tracker |
US10002181B2 (en) | 2015-09-11 | 2018-06-19 | International Business Machines Corporation | Real-time tagger |
US10387053B1 (en) * | 2015-09-16 | 2019-08-20 | Amazon Technologies, Inc. | Memory synchronization in a distributed computing system |
US20170177613A1 (en) * | 2015-12-22 | 2017-06-22 | Egnyte, Inc. | Event-Based User State Synchronization in a Cloud Storage System |
US10187464B2 (en) * | 2015-12-27 | 2019-01-22 | Dropbox, Inc. | Systems and methods of re-associating content items |
CN105787077B (en) * | 2016-03-02 | 2020-05-15 | 百度在线网络技术(北京)有限公司 | Data synchronization method and device |
US10936548B2 (en) | 2016-03-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | File synchronization pausing for individual files |
CN106597866B (en) * | 2016-12-23 | 2019-10-11 | 华东交通大学 | Smart home system and its timed task contention resolution of application |
US10970302B2 (en) | 2017-06-22 | 2021-04-06 | Adobe Inc. | Component-based synchronization of digital assets |
US20190342380A1 (en) | 2018-05-07 | 2019-11-07 | Microsoft Technology Licensing, Llc | Adaptive resource-governed services for performance-compliant distributed workloads |
US10970193B2 (en) | 2018-05-23 | 2021-04-06 | Dropbox, Inc. | Debugging a client synchronization service |
US11321012B2 (en) * | 2018-10-12 | 2022-05-03 | Adobe Inc. | Conflict resolution within synchronized composite-part-based digital assets |
WO2020113435A1 (en) * | 2018-12-04 | 2020-06-11 | 比特大陆科技有限公司 | Record transmitting method and device |
US11573930B2 (en) * | 2019-06-03 | 2023-02-07 | Zuora, Inc. | Self-healing data synchronization |
US11086757B1 (en) * | 2019-06-12 | 2021-08-10 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
US11720347B1 (en) | 2019-06-12 | 2023-08-08 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050054A1 (en) | 2003-08-21 | 2005-03-03 | Clark Quentin J. | Storage platform for organizing, searching, and sharing data |
US20080195759A1 (en) | 2007-02-09 | 2008-08-14 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835601A (en) * | 1994-03-15 | 1998-11-10 | Kabushiki Kaisha Toshiba | File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing |
US6073161A (en) * | 1997-12-16 | 2000-06-06 | International Business Machines Corporation | Method and apparatus for determining editing conflicts in a multi-authoring system |
US6631386B1 (en) * | 2000-04-22 | 2003-10-07 | Oracle Corp. | Database version control subsystem and method for use with database management system |
US6598059B1 (en) * | 2000-04-22 | 2003-07-22 | Oracle Corp. | System and method of identifying and resolving conflicts among versions of a database table |
US6529917B1 (en) * | 2000-08-14 | 2003-03-04 | Divine Technology Ventures | System and method of synchronizing replicated data |
US6993522B2 (en) * | 2001-06-27 | 2006-01-31 | Microsoft Corporation | System and method for resolving conflicts detected during a synchronization session |
US7739240B2 (en) * | 2002-12-09 | 2010-06-15 | Hewlett-Packard Development Company, L.P. | Replication and replica management in a wide area file system |
US7512638B2 (en) * | 2003-08-21 | 2009-03-31 | Microsoft Corporation | Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system |
US7533134B2 (en) * | 2004-04-01 | 2009-05-12 | Microsoft Corporation | Systems and methods for the propagation of conflict resolution to enforce item convergence (i.e., data convergence) |
US20060106879A1 (en) * | 2004-11-16 | 2006-05-18 | International Business Machines Corporation | Conflict resolution in a synchronization framework |
US20060242204A1 (en) * | 2005-04-22 | 2006-10-26 | Microsoft Corporation | Sync manager conflict resolution |
US7529780B1 (en) * | 2005-12-30 | 2009-05-05 | Google Inc. | Conflict management during data object synchronization between client and server |
US7747567B2 (en) * | 2005-12-30 | 2010-06-29 | Microsoft Corporation | Separation of conflict resolution from synchronization |
US7606838B2 (en) * | 2006-02-22 | 2009-10-20 | Microsoft Corporation | Distributed conflict resolution for replicated databases |
US7769727B2 (en) * | 2006-05-31 | 2010-08-03 | Microsoft Corporation | Resolving update-delete conflicts |
US7831558B2 (en) * | 2007-06-22 | 2010-11-09 | Microsoft Corporation | Bi-directional data modification with synchronization |
US7991740B2 (en) * | 2008-03-04 | 2011-08-02 | Apple Inc. | Synchronization server process |
US8090681B2 (en) * | 2008-06-26 | 2012-01-03 | Microsoft Corporation | Resolving conflicts in content management systems |
US8572022B2 (en) | 2010-03-02 | 2013-10-29 | Microsoft Corporation | Automatic synchronization conflict resolution |
-
2010
- 2010-03-02 US US12/715,726 patent/US8572022B2/en not_active Expired - Fee Related
-
2011
- 2011-03-01 CN CN201180011793.1A patent/CN102770854B/en not_active Expired - Fee Related
- 2011-03-01 EP EP11751213.7A patent/EP2542980A4/en not_active Withdrawn
- 2011-03-01 WO PCT/US2011/026711 patent/WO2011109416A2/en active Application Filing
-
2013
- 2013-10-10 US US14/051,172 patent/US8965840B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050054A1 (en) | 2003-08-21 | 2005-03-03 | Clark Quentin J. | Storage platform for organizing, searching, and sharing data |
US20080195759A1 (en) | 2007-02-09 | 2008-08-14 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
Non-Patent Citations (1)
Title |
---|
See also references of EP2542980A4 |
Cited By (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519526B2 (en) | 2007-12-05 | 2016-12-13 | Box, Inc. | File management system and collaboration service and integration capabilities with third party applications |
US8965840B2 (en) | 2010-03-02 | 2015-02-24 | Microsoft Technology Licensing, Llc | Automatic synchronization conflict resolution |
US10554426B2 (en) | 2011-01-20 | 2020-02-04 | Box, Inc. | Real time notification of activities that occur in a web-based collaboration environment |
US9015601B2 (en) | 2011-06-21 | 2015-04-21 | Box, Inc. | Batch uploading of content to a web-based collaboration environment |
US9063912B2 (en) | 2011-06-22 | 2015-06-23 | Box, Inc. | Multimedia content preview rendering in a cloud content management system |
US9652741B2 (en) | 2011-07-08 | 2017-05-16 | Box, Inc. | Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof |
US9978040B2 (en) | 2011-07-08 | 2018-05-22 | Box, Inc. | Collaboration sessions in a workspace on a cloud-based content management system |
US9197718B2 (en) | 2011-09-23 | 2015-11-24 | Box, Inc. | Central management and control of user-contributed content in a web-based collaboration environment and management console thereof |
US8990151B2 (en) | 2011-10-14 | 2015-03-24 | Box, Inc. | Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution |
US11210610B2 (en) | 2011-10-26 | 2021-12-28 | Box, Inc. | Enhanced multimedia content preview rendering in a cloud content management system |
US9098474B2 (en) | 2011-10-26 | 2015-08-04 | Box, Inc. | Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience |
US9015248B2 (en) | 2011-11-16 | 2015-04-21 | Box, Inc. | Managing updates at clients used by a user to access a cloud-based collaboration service |
US8990307B2 (en) | 2011-11-16 | 2015-03-24 | Box, Inc. | Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform |
US11537630B2 (en) | 2011-11-29 | 2022-12-27 | Box, Inc. | Mobile platform file and folder selection functionalities for offline access and synchronization |
US11853320B2 (en) | 2011-11-29 | 2023-12-26 | Box, Inc. | Mobile platform file and folder selection functionalities for offline access and synchronization |
US10909141B2 (en) | 2011-11-29 | 2021-02-02 | Box, Inc. | Mobile platform file and folder selection functionalities for offline access and synchronization |
US9773051B2 (en) | 2011-11-29 | 2017-09-26 | Box, Inc. | Mobile platform file and folder selection functionalities for offline access and synchronization |
US9019123B2 (en) | 2011-12-22 | 2015-04-28 | Box, Inc. | Health check services for web-based collaboration environments |
US9904435B2 (en) | 2012-01-06 | 2018-02-27 | Box, Inc. | System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment |
US11232481B2 (en) | 2012-01-30 | 2022-01-25 | Box, Inc. | Extended applications of multimedia content previews in the cloud-based content management system |
US9965745B2 (en) | 2012-02-24 | 2018-05-08 | Box, Inc. | System and method for promoting enterprise adoption of a web-based collaboration environment |
US10713624B2 (en) | 2012-02-24 | 2020-07-14 | Box, Inc. | System and method for promoting enterprise adoption of a web-based collaboration environment |
US9195636B2 (en) | 2012-03-07 | 2015-11-24 | Box, Inc. | Universal file type preview for mobile devices |
US9575981B2 (en) | 2012-04-11 | 2017-02-21 | Box, Inc. | Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system |
US9396216B2 (en) | 2012-05-04 | 2016-07-19 | Box, Inc. | Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform |
US9691051B2 (en) | 2012-05-21 | 2017-06-27 | Box, Inc. | Security enhancement through application access control |
US9552444B2 (en) | 2012-05-23 | 2017-01-24 | Box, Inc. | Identification verification mechanisms for a third-party application to access content in a cloud-based platform |
US9280613B2 (en) | 2012-05-23 | 2016-03-08 | Box, Inc. | Metadata enabled third-party application access of content at a cloud-based platform via a native client to the cloud-based platform |
US8914900B2 (en) | 2012-05-23 | 2014-12-16 | Box, Inc. | Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform |
US9027108B2 (en) | 2012-05-23 | 2015-05-05 | Box, Inc. | Systems and methods for secure file portability between mobile applications on a mobile device |
US9021099B2 (en) | 2012-07-03 | 2015-04-28 | Box, Inc. | Load balancing secure FTP connections among multiple FTP servers |
US9712510B2 (en) | 2012-07-06 | 2017-07-18 | Box, Inc. | Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform |
US9792320B2 (en) | 2012-07-06 | 2017-10-17 | Box, Inc. | System and method for performing shard migration to support functions of a cloud-based service |
US10452667B2 (en) | 2012-07-06 | 2019-10-22 | Box Inc. | Identification of people as search results from key-word based searches of content in a cloud-based environment |
US9473532B2 (en) | 2012-07-19 | 2016-10-18 | Box, Inc. | Data loss prevention (DLP) methods by a cloud service including third party integration architectures |
US9237170B2 (en) | 2012-07-19 | 2016-01-12 | Box, Inc. | Data loss prevention (DLP) methods and architectures by a cloud service |
US9794256B2 (en) | 2012-07-30 | 2017-10-17 | Box, Inc. | System and method for advanced control tools for administrators in a cloud-based service |
US8868574B2 (en) | 2012-07-30 | 2014-10-21 | Box, Inc. | System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment |
US9729675B2 (en) | 2012-08-19 | 2017-08-08 | Box, Inc. | Enhancement of upload and/or download performance based on client and/or server feedback information |
US9369520B2 (en) | 2012-08-19 | 2016-06-14 | Box, Inc. | Enhancement of upload and/or download performance based on client and/or server feedback information |
US9558202B2 (en) | 2012-08-27 | 2017-01-31 | Box, Inc. | Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment |
US9135462B2 (en) | 2012-08-29 | 2015-09-15 | Box, Inc. | Upload and download streaming encryption to/from a cloud-based platform |
US9450926B2 (en) | 2012-08-29 | 2016-09-20 | Box, Inc. | Upload and download streaming encryption to/from a cloud-based platform |
US9311071B2 (en) | 2012-09-06 | 2016-04-12 | Box, Inc. | Force upgrade of a mobile application via a server side configuration file |
US9195519B2 (en) | 2012-09-06 | 2015-11-24 | Box, Inc. | Disabling the self-referential appearance of a mobile application in an intent via a background registration |
US9117087B2 (en) | 2012-09-06 | 2015-08-25 | Box, Inc. | System and method for creating a secure channel for inter-application communication based on intents |
US9292833B2 (en) | 2012-09-14 | 2016-03-22 | Box, Inc. | Batching notifications of activities that occur in a web-based collaboration environment |
US10200256B2 (en) | 2012-09-17 | 2019-02-05 | Box, Inc. | System and method of a manipulative handle in an interactive mobile user interface |
US9553758B2 (en) | 2012-09-18 | 2017-01-24 | Box, Inc. | Sandboxing individual applications to specific user folders in a cloud-based service |
US10915492B2 (en) | 2012-09-19 | 2021-02-09 | Box, Inc. | Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction |
US9959420B2 (en) | 2012-10-02 | 2018-05-01 | Box, Inc. | System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment |
US9705967B2 (en) | 2012-10-04 | 2017-07-11 | Box, Inc. | Corporate user discovery and identification of recommended collaborators in a cloud platform |
US9495364B2 (en) | 2012-10-04 | 2016-11-15 | Box, Inc. | Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform |
US9665349B2 (en) | 2012-10-05 | 2017-05-30 | Box, Inc. | System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform |
US9628268B2 (en) | 2012-10-17 | 2017-04-18 | Box, Inc. | Remote key management in a cloud-based environment |
US10235383B2 (en) | 2012-12-19 | 2019-03-19 | Box, Inc. | Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment |
US9396245B2 (en) | 2013-01-02 | 2016-07-19 | Box, Inc. | Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9953036B2 (en) | 2013-01-09 | 2018-04-24 | Box, Inc. | File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9507795B2 (en) | 2013-01-11 | 2016-11-29 | Box, Inc. | Functionalities, features, and user interface of a synchronization client to a cloud-based environment |
US10599671B2 (en) | 2013-01-17 | 2020-03-24 | Box, Inc. | Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform |
EP2757491A1 (en) * | 2013-01-17 | 2014-07-23 | Box, Inc. | Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform |
US10725968B2 (en) | 2013-05-10 | 2020-07-28 | Box, Inc. | Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform |
US10846074B2 (en) | 2013-05-10 | 2020-11-24 | Box, Inc. | Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client |
US10877937B2 (en) | 2013-06-13 | 2020-12-29 | Box, Inc. | Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform |
US9633037B2 (en) | 2013-06-13 | 2017-04-25 | Box, Inc | Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform |
US9805050B2 (en) | 2013-06-21 | 2017-10-31 | Box, Inc. | Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform |
US10229134B2 (en) | 2013-06-25 | 2019-03-12 | Box, Inc. | Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform |
US10110656B2 (en) | 2013-06-25 | 2018-10-23 | Box, Inc. | Systems and methods for providing shell communication in a cloud-based platform |
US9053165B2 (en) | 2013-07-08 | 2015-06-09 | Dropbox, Inc. | Structured content item synchronization |
WO2015006248A1 (en) * | 2013-07-08 | 2015-01-15 | Dropbox, Inc. | Structured content item synchronization |
US9535924B2 (en) | 2013-07-30 | 2017-01-03 | Box, Inc. | Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US11435865B2 (en) | 2013-09-13 | 2022-09-06 | Box, Inc. | System and methods for configuring event-based automation in cloud-based collaboration platforms |
US9519886B2 (en) | 2013-09-13 | 2016-12-13 | Box, Inc. | Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform |
US10509527B2 (en) | 2013-09-13 | 2019-12-17 | Box, Inc. | Systems and methods for configuring event-based automation in cloud-based collaboration platforms |
US11822759B2 (en) | 2013-09-13 | 2023-11-21 | Box, Inc. | System and methods for configuring event-based automation in cloud-based collaboration platforms |
US9213684B2 (en) | 2013-09-13 | 2015-12-15 | Box, Inc. | System and method for rendering document in web browser or mobile device regardless of third-party plug-in software |
US9535909B2 (en) | 2013-09-13 | 2017-01-03 | Box, Inc. | Configurable event-based automation architecture for cloud-based collaboration platforms |
US9483473B2 (en) | 2013-09-13 | 2016-11-01 | Box, Inc. | High availability architecture for a cloud-based concurrent-access collaboration platform |
US10044773B2 (en) | 2013-09-13 | 2018-08-07 | Box, Inc. | System and method of a multi-functional managing user interface for accessing a cloud-based platform via mobile devices |
US8892679B1 (en) | 2013-09-13 | 2014-11-18 | Box, Inc. | Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform |
US9704137B2 (en) | 2013-09-13 | 2017-07-11 | Box, Inc. | Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform |
US10866931B2 (en) | 2013-10-22 | 2020-12-15 | Box, Inc. | Desktop application for accessing a cloud collaboration platform |
US11314556B2 (en) | 2014-03-01 | 2022-04-26 | Microsoft Technology Licensing, Llc. | Shadowing local on-premises information to a cloud-based computing system |
EP3114566B1 (en) * | 2014-03-01 | 2020-11-18 | Microsoft Technology Licensing, LLC | Shadowing local on-premises information to a cloud-based computing system |
US10965746B2 (en) | 2014-04-08 | 2021-03-30 | Dropbox, Inc. | Determining presence in an application accessing shared and synchronized content |
US10791186B2 (en) | 2014-04-08 | 2020-09-29 | Dropbox, Inc. | Displaying presence in an application accessing shared and synchronized content |
US11172038B2 (en) | 2014-04-08 | 2021-11-09 | Dropbox, Inc. | Browser display of native application presence and interaction data |
US11683389B2 (en) | 2014-04-08 | 2023-06-20 | Dropbox, Inc. | Browser display of native application presence and interaction data |
US10887388B2 (en) | 2014-04-08 | 2021-01-05 | Dropbox, Inc. | Managing presence among devices accessing shared and synchronized content |
US10530854B2 (en) | 2014-05-30 | 2020-01-07 | Box, Inc. | Synchronization of permissioned content in cloud-based environments |
US9602514B2 (en) | 2014-06-16 | 2017-03-21 | Box, Inc. | Enterprise mobility management and verification of a managed application by a content provider |
US11146600B2 (en) | 2014-08-29 | 2021-10-12 | Box, Inc. | Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms |
US9894119B2 (en) | 2014-08-29 | 2018-02-13 | Box, Inc. | Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms |
US10038731B2 (en) | 2014-08-29 | 2018-07-31 | Box, Inc. | Managing flow-based interactions with cloud-based shared content |
US10708323B2 (en) | 2014-08-29 | 2020-07-07 | Box, Inc. | Managing flow-based interactions with cloud-based shared content |
US11876845B2 (en) | 2014-08-29 | 2024-01-16 | Box, Inc. | Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms |
US10708321B2 (en) | 2014-08-29 | 2020-07-07 | Box, Inc. | Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms |
US9756022B2 (en) | 2014-08-29 | 2017-09-05 | Box, Inc. | Enhanced remote key management for an enterprise in a cloud-based environment |
US9846528B2 (en) | 2015-03-02 | 2017-12-19 | Dropbox, Inc. | Native application collaboration |
US11132107B2 (en) | 2015-03-02 | 2021-09-28 | Dropbox, Inc. | Native application collaboration |
US10235022B2 (en) | 2015-03-02 | 2019-03-19 | Dropbox, Inc. | Native application collaboration |
US11526260B2 (en) | 2015-03-02 | 2022-12-13 | Dropbox, Inc. | Native application collaboration |
US11170345B2 (en) | 2015-12-29 | 2021-11-09 | Dropbox Inc. | Content item activity feed for presenting events associated with content items |
US11875028B2 (en) | 2015-12-30 | 2024-01-16 | Dropbox, Inc. | Native application collaboration |
US11943264B2 (en) | 2016-04-04 | 2024-03-26 | Dropbox, Inc. | Change comments for synchronized content items |
US10382502B2 (en) | 2016-04-04 | 2019-08-13 | Dropbox, Inc. | Change comments for synchronized content items |
US11425175B2 (en) | 2016-04-04 | 2022-08-23 | Dropbox, Inc. | Change comments for synchronized content items |
US10693965B2 (en) | 2016-06-20 | 2020-06-23 | Alibaba Group Holding Limited | Storing data in distributed systems |
US10798168B2 (en) | 2016-06-20 | 2020-10-06 | Alibaba Group Holding Limited | Storing data in distributed systems |
TWI689181B (en) * | 2016-06-20 | 2020-03-21 | 香港商阿里巴巴集團服務有限公司 | Data processing method and system |
KR102432304B1 (en) | 2017-12-28 | 2022-08-11 | 드롭박스, 인크. | Resolving Violations in Client Synchronization |
KR20200093569A (en) * | 2017-12-28 | 2020-08-05 | 드롭박스, 인크. | Resolving violations in client synchronization |
US11490155B2 (en) | 2018-08-31 | 2022-11-01 | Apple Inc. | Management of devices in ad hoc rendering networks |
US11032604B2 (en) | 2018-08-31 | 2021-06-08 | Apple Inc. | Management of devices in ad hoc rendering networks |
Also Published As
Publication number | Publication date |
---|---|
WO2011109416A3 (en) | 2011-12-15 |
EP2542980A2 (en) | 2013-01-09 |
US20140040202A1 (en) | 2014-02-06 |
US8572022B2 (en) | 2013-10-29 |
US20110218964A1 (en) | 2011-09-08 |
EP2542980A4 (en) | 2013-11-06 |
CN102770854B (en) | 2015-11-25 |
US8965840B2 (en) | 2015-02-24 |
CN102770854A (en) | 2012-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8965840B2 (en) | Automatic synchronization conflict resolution | |
US20230315690A1 (en) | System and method for content synchronization | |
US11803516B2 (en) | System and method for selective synchronization | |
US10289692B2 (en) | Preserving file metadata during atomic save operations | |
RU2425415C2 (en) | Resource update and replication | |
KR101566566B1 (en) | Spreadsheet collaboration between rich and browser clients | |
KR101076851B1 (en) | A method for managing multiple file states for replicated files | |
US20030055828A1 (en) | Methods for synchronizing on-line and off-line transcript projects | |
US9367579B1 (en) | System and method for maintaining a file change log within a distributed file system | |
US7730101B2 (en) | Implementing a tree data storage structure in a distributed environment | |
US9697258B2 (en) | Supporting enhanced content searches in an online content-management system | |
US8639661B2 (en) | Supporting media content revert functionality across multiple devices | |
US7523141B2 (en) | Synchronization operations involving entity identifiers | |
US20050273474A1 (en) | Method and system for data processing with data replication for the same | |
KR20080071131A (en) | Slave replica member | |
US20090132534A1 (en) | Remote replication synchronizing/accessing system and method thereof | |
US9934240B2 (en) | On demand access to client cached files | |
US7194486B2 (en) | Method and system for data processing with data replication for the same | |
CN113918535A (en) | Data reading method, device, equipment and storage medium | |
CN115114232A (en) | Method, device and medium for enumerating historical version objects | |
US8090695B2 (en) | Dynamic restoration of message object search indexes | |
US20100293143A1 (en) | Initialization of database for synchronization | |
CN109885552A (en) | The metadata dynamic management approach and distributed file system of distributed file system | |
US20210326323A1 (en) | Information processing device and information processing system | |
KR102024719B1 (en) | Method and apparatus for journaling of file-based database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 201180011793.1 Country of ref document: CN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2011751213 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11751213 Country of ref document: EP Kind code of ref document: A2 |