IP Library Granted Patent US 9,633,037
Granted Patent B2
US 9,633,037 · App. 14/304,038 · Granted Apr 25, 2017

Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform

Inventors: Benjamin Campbell Smith (Mountain View, CA); David Mackenzie (Daly City, CA); Yiming Lu (Los Altos, CA); Kunal Parmar (San Jose, CA); Peter Potrebic (Calistoga, CA)
Assignee: Box, Inc
G06F17/30174G06F17/30578
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 9,633,037
App. No.
14/304,038
Granted
Apr 25, 2017
Kind
B2
Abstract

Techniques for monitoring local and/or remote file systems by a synchronization component (e.g., client/server) of a cloud-based platform are disclosed. In some embodiments, a method of building synchronization events by a synchronization component (e.g., a synchronization server/client) includes obtaining a set of items that have been changed and their new states and retrieving last known states of the set of items that are stored in a reference snapshot inside a filesystem scanner. The method further includes generating differences between the new states and the last known states of the set of items as item changes and utilizing information provided by the item changes to translate the item changes into synchronization events for execution on the opposing file system. A method of handling failed synchronization events by a synchronization component of the cloud-based platform by collapsing a subsequent event with the failed synchronization event is also disclosed.

Claims (51)

1. A method of building synchronization events by a synchronization component associated with a cloud-based platform, the method comprising:

obtaining, at a client device, a set of items that have been changed and new states of the set of items;

retrieving last known states of the set of items, wherein the last known states of the set of items are stored in a reference snapshot inside a filesystem scanner;

generating differences between the new states and the last known states of the set of items as item changes;

utilizing information provided by the item changes to translate the item changes into synchronization events, wherein a filter pipeline included in the synchronization component generates the synchronization event; and

upon determining, at the client device, that the synchronization component lacks access to filesystem Information,

collecting the filesystem information and

adding the file system information into the filter pipeline for generating the synchronization events.

2. The method of claim 1 , further comprising receiving a notification of a change in a folder and in response scanning the folder to obtain the set of items that have been changed.

3. The method of claim 1 , further comprising:

detecting event dependencies between the item changes;

ordering the item changes based on the detected event dependencies to allow the new state brought about by applying each item change is consistent with a filesystem.

4. The method of claim 1 , further comprising:

checking each item change against a snapshot of a filesystem monitored by the synchronization component to determine if the new state brought about by the item change is consistent with the filesystem.

5. The method of claim 4 , further comprising:

if the new state brought about by the item change is not consistent with the filesystem, buffering the item change until another item change alters the snapshot of the filesystem.

6. The method of claim 4 , further comprising:

if the new state brought about by the item change is consistent with the filesystem, providing the item change to the filter pipeline for generating the synchronization events.

7. The method of claim 1 , wherein the synchronization events include actions arranged in a predetermined order for execution on an opposing file system, wherein the predetermined order allows the synchronization events to be executed without generating any inconsistencies.

8. The method of claim 1 , wherein the synchronization component is one of a synchronization client on a device or a synchronization server remote from the device, each associated with a respective filesystem.

9. A method of generating synchronization events associated with a synchronization component of a cloud-based platform, the method comprising:

detecting that a folder on a filesystem has been changed;

generating a new snapshot of the filesystem that is consistent;

retrieving a reference snapshot of the filesystem;

generating item changes by differencing the new snapshot from the reference snapshot;

using the item changes to generate the synchronization events for execution on an opposing file system, wherein a filter pipeline included in the synchronization component generates the synchronization event; and

upon determining that the synchronization component lacks access to filesystem information:

collecting the filesystem information and

adding the filesystem information into the filter pipline for generating the synchronization events.

10. The method of claim 9 , further comprising:

updating the reference snapshot using the new snapshot.

11. The method of claim 9 , further comprising:

checking each item change against a current snapshot of the filesystem to determine an order for executing the item changes.

12. The method of claim 11 , further comprising:

generating raw events in the determined order as executable actions to be applied to the opposing filesystem without generating inconsistencies.

13. The method of claim 12 , further comprising:

processing the raw events to generate the synchronization events for execution.

14. The method of claim 13 , wherein processing the raw events includes translating file system identifiers of items associated with the item changes to logical identifiers.

15. The method of claim 9 , wherein differencing the new snapshot from the reference snapshot further comprises:

generating a list of all item identifiers that are in the reference snapshot;

processing each item in the new snapshot to obtain item changes for items that have different item states in the reference snapshot;

removing all items involved in the processing from the list; and

obtaining item changes with delete set to true for all items remaining in the list.

16. A non-transitor computer readable medium storing instructions configured to, when executed by a computing device, cause the computing device to perform a method of building synchronization events by a synchronization component associated with a cloud-based platform, the method comprising:

generating file system notifications, wherein the notifications include information about files or folders that have been changed;

determining item changes based on a consistent snapshot of a folder whose children have changed and a reference snapshot of the folder in response to the file system notifications;

generating raw events by ordering the item changes and producing a set of executable actions;

generating synchronization events by mapping file system identifiers to logical identifiers for execution on an opposing file system, wherein a filter pipeline included in the synchronization component generates the synchronization events; and

upon determining that the synchronization component lacks access to filesystem information:

collecting the filesystem information and

adding the filesystem information into the filter pipeline for generating the synchronization events.

Assignments (5)
SECURITY INTEREST Recorded Jul 26, 2023
From: BOX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 064389/0686 →
RELEASE OF SECURITY INTEREST Recorded Dec 8, 2015
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: BOX, INC.
Reel/Frame 037237/0503 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER FROM 14308038 AND REPLACE WITH 14304038 PREVIOUSLY RECORDED AT REEL: 034590 FRAME: 0250. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Dec 30, 2014
From: BOX, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 034769/0809 →
PATENT SECURITY AGREEMENT Recorded Dec 9, 2014
From: BOX, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 034590/0250 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2014
From: SMITH, BENJAMIN CAMPBELL; MACKENZIE, DAVID; LU, YIMING; PARMAR, KUNAL; POTREBIC, PETER
To: BOX, INC.
Reel/Frame 033962/0977 →
Continuity (2)
Provisional Application 61834756 · Jun 13, 2013
Related Publication 20140372376A1 · Dec 18, 2014