IP Library › Granted Patent US 10,282,255
Granted Patent B2
US 10,282,255 · App. 15/061,124 · Granted May 7, 2019

Coordinating file synchronization between a sync engine and another application that supports document collaboration

Inventors: Jack Allen Nichols (Bothell, WA); Benjamin M. Yim (Redmond, WA); Adam Christopher Czeisler (Seattle, WA); Amnon I. Govrin (Bellevue, WA); Michal Krzysztof Piaseczny (Bellevue, WA); Marcus Eduardo Markiewicz (Mercer Island, WA); Daniel Vincent Fiordalis (Seattle, WA); Jonathan Alexander Bockelman (Kirkland, WA); Marcelo Albuquerque Fernandes Mas (Redmond, WA); Chris J. Guzak (Redmond, WA); Michael J. Novak (Redmond, WA); Juan-Lee Pang (Redmond, WA); Tyler Kien Beam (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F11/1451G06F17/3033G06F17/30174G06Q10/101H04L67/1095G06F2201/80G06F2201/84
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,282,255
App. No.
15/061,124
Granted
May 7, 2019
Kind
B2
Abstract

A synchronization engine detects a notification of a change to a file. It determines whether an application associated with the file has indicated that the file is to be synchronized by the application. If so, the changes to the file are synchronized between a cloud-based storage system and a local disk by the application. Collaborative metadata, associated with the synchronized file, is updated to indicate a state of a copy of the file on the local disk and a copy of the file in the cloud-based storage system. The collaborative metadata is stored by the synchronization engine.

Claims (43)

1. A computing system, comprising:

file synchronization logic that synchronizes changes to a file that has a corresponding cloud file stored on a cloud based storage system and a corresponding local file stored on a local file system;

backoff processing logic that receives a backoff indicator corresponding to the file and determines, based on the backoff indicator, whether the file synchronization logic is to synchronize the changes to the file or to backoff and allow the changes to be synchronized by a co-authoring application and

metadata computing logic that maintains a first set of collaborative metadata indicative of content and a version of the cloud file and a second set of collaborative metadata indicative of content and a version of the local file.

2. The computing system of claim 1 wherein the backoff processing logic determines whether the file synchronization logic is to backoff by determining whether the file is open by a co-authoring application and, if so, indicates to the file synchronization logic that the file is locked.

3. The computing system of claim 1 wherein the computing system exposes a metadata interface that can be invoked by the co-authoring application to obtain and set the collaborative metadata for the local file.

4. The computing system of claim 3 wherein the metadata computing logic maintains the first set of collaborative metadata by generating a first hash value that is a hash of the content of the cloud file and a first waterline value that uniquely identifies a version of the contents of the cloud file.

5. The computing system of claim 3 wherein the file synchronization logic detects changes to the cloud file and changes to the local file and, in response, the metadata computing logic compares the first set of collaborative metadata to the second set of collaborative metadata and, if there is a match, determines that the cloud file and the local file are synchronized with one another.

6. The computing system of claim 3 wherein when the file synchronization logic detects updates to the cloud file, but does not detect changes to the local file, the metadata computing logic determines that the first and second set of collaborative metadata do not match and the backoff processing logic is configured to determine that the file is locked until either the file is closed in the co-authoring application or the until the second set of collaborative metadata for the local file is updated by the co-authoring application.

7. The computing system of claim 3 wherein the file synchronization logic is configured to, in response to detecting a change to the local file or the cloud file, and in response to the metadata computing logic determining that the first and second sets of collaborative metadata do not match, determine which of the cloud file and the local file changed and synchronize the cloud file with the local file, based on which file changed.

8. The computing system of claim 3 wherein the metadata computing logic maintains the first and second sets of collaborative metadata regardless of whether the backoff processing logic determines that the file is locked.

9. A computer implemented method of synchronizing a file, wherein the file is stored on a cloud-based storage system as a cloud-based file, and on a local file system as a corresponding local file, comprising:

receiving notification that the cloud-based file or the local file has changed;

determining whether an application, associated with the file, has the file open;

if the application has the file open, then determining that the application is to synchronize the cloud-based file with the local file;

if the application does not have the file open, then synchronizing the cloud-based file and the local file, based on the changes; and

updating a first set of collaborative metadata corresponding to the cloud-based file and a second set of collaborative metadata corresponding to the local file in a metadata store accessible by the application and the cloud-based storage system, the first and second sets of collaborative metadata identifying a version and content of the corresponding file.

10. The computer implemented method of claim 9 wherein determining whether the application has the file open comprises:

determining whether the application supports co-authoring functionality.

11. The computer implemented method of claim 10 wherein determining whether the application has the file open comprises:

determining whether the application has the file open in a co-authoring mode.

12. The computer implemented method of claim 11 wherein determining whether the application has the file open in a co-authoring mode, comprises:

attempting to perform an operation with respect to the file that is precluded when the document is open in the application in the co-authoring mode; and

determining whether the operation is successful.

13. The computer implemented method of claim 10 wherein updating the first and second sets of collaborative metadata, for each set of collaborative metadata, comprises:

updating a hash value that comprises a hash of content in the corresponding file that can be co-authored.

14. The computer implemented method of claim 13 wherein updating the first and second sets of collaborative metadata, for each set of collaborative metadata, comprises:

updating a waterline value that uniquely identifies a version of the content of the corresponding file.

15. The computer implemented method of claim 10 wherein updating the first and second sets of collaborative metadata comprises:

exposing a metadata interface that can be invoked by the application to obtain and set the collaborative metadata for the local file.

16. The computer implemented method of claim 9 wherein determining that the application is to synchronize the cloud-based file with the local file, comprises:

marking the file for a deferred download for synchronization after the application closes the file;

after the application no longer has the file open, comparing the first and second sets of collaborative metadata;

if the first and second sets of collaborative metadata match, then determining that the cloud-based file and the local file are already synchronized; and

if the first and second sets of collaborative metadata do not match, then synchronizing the cloud-based file and the local file.

17. The computer implemented method of claim 9 wherein updating the first and second sets of collaborative metadata comprises:

storing the first and second sets of collaborative metadata in the metadata store that comprises a single source of the first and second sets of collaborative metadata for both the cloud-based storage system and the application.

18. A computing system, comprising:

file synchronization logic that synchronizes changes to a file that has a corresponding cloud file stored on a cloud based storage system and a corresponding local file stored on a local file system;

backoff processing logic that determines whether the file is open by a co-authoring application and, if so, indicates to the file synchronization logic that the file is locked; and

metadata computing logic that maintains a first set of collaborative metadata indicative of content and a version of the cloud file and a second set of collaborative metadata indicative of content and a version of the local file in a metadata store that comprises a single source for the stored first and second sets of collaborative metadata for both the co-authoring application and the cloud based storage system.

19. The computing system of claim 18 wherein once the file is unlocked, the metadata computing logic is configured to determine whether the first and second sets of collaborative metadata match one another, if so, the file synchronization logic is configured to determine that the co-authoring application has already synchronized the changes.

20. The computing system of claim 19 wherein the metadata computing logic is configured to maintain the first set of collaborative metadata by generating a first hash value that is a hash of the content of the cloud file and a first waterline value that uniquely identifies a version of the contents of the cloud file, and maintains the second set of collaborative metadata by maintaining a second hash value that is a hash of the content of the local file and a second waterline value that uniquely identifies a version of the contents of the local file.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2016
From: NICHOLS, JACK ALLEN; YIM, BENJAMIN M.; CZEISLER, ADAM CHRISTOPHER; GOVRIN, AMNON I.; PIASECZNY, MICHAL KRZYSZTOF; MARKIEWICZ, MARCUS EDUARDO; FIORDALIS, DANIEL VINCENT; BOCKELMAN, JONATHAN ALEXANDER; MAS, MARCELO ALBUQUERQUE FERNANDES; GUZAK, CHRIS J.; NOVAK, MICHAEL J.; PANG, JUAN-LEE; BEAM, TYLER KIEN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 038056/0621 →
Continuity (2)
Provisional Application 62193022 · Jul 15, 2015
Related Publication 20170017551A1 · Jan 19, 2017