IP Library Granted Patent US 11,120,039
Granted Patent B2
US 11,120,039 · App. 15/863,748 · Granted Sep 14, 2021

Updating a remote tree for a client synchronization service

Inventors: Robert Ying (San Francisco, CA); Nipunn Koorapati (San Francisco, CA); Gautam Gupta (San Francisco, CA)
Assignee: Dropbox, Inc.
G06F16/27G06F1/04G06F3/065G06F3/067G06F3/0619G06F3/0623G06F3/0629G06F3/0652G06F9/547G06F11/1469G06F12/1466G06F16/11G06F16/113G06F16/116G06F16/119G06F16/122G06F16/125G06F16/128G06F16/13G06F16/137G06F16/148G06F16/152G06F16/156G06F16/16G06F16/162G06F16/168G06F16/172G06F16/176G06F16/178G06F16/1734G06F16/1744G06F16/1767G06F16/1787G06F16/18G06F16/182G06F16/183G06F16/184G06F16/185G06F16/1827G06F16/1844G06F16/2246G06F16/2255G06F16/2322G06F16/2358G06F16/2365G06F16/2379G06F16/24552G06F16/275G06F16/907G06F16/9027G06F16/951G06F16/955G06F16/958G06F21/10G06F21/604G06F21/6218H04L9/3213H04L9/3247H04L63/08H04L63/0853H04L63/10H04L63/101H04L63/102H04L67/06H04L67/1095H04L67/1097G06F2201/84G06F2212/1052G06F2221/2141H04L67/306H04L67/42
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 11,120,039
App. No.
15/863,748
Granted
Sep 14, 2021
Kind
B2
Abstract

The disclosed technology relates to a system configured to receive, from a content management system, an initial portion of a log of operations for a target namespace, build a subtree for the target namespace based on the initial portion of the log of operations, and mount the subtree for the target namespace at a mount location of a remote tree representing a server state for content items stored on the content management system.

Claims (65)

1. A computer-implemented method comprising:

receiving, at a client device, a mount notification for mounting a target namespace within an existing namespace represented in a remote tree, wherein the remote tree represents a server state for content items stored on a content management system, and wherein content items of the target namespace are unknown upon receiving the mount notification;

preventing a mounting of the target namespace before a determination of the content items of the target namespace;

receiving, from the content management system, an incoming prefix of a log of operations for the target namespace, wherein the log of operations provides operations data with respect to the content items of the target namespace;

building a subtree for the target namespace, triggered by the receiving of the incoming prefix, by incrementally processing a current state after each operation of the log of operations and determining the content items of the target namespace;

after building the subtree by completing the incremental processing of the current state after each operation of the log of operations, validating the subtree does not violate a set of tree constraints associated with the remote tree; and

mounting the subtree for the target namespace at a mount location of the remote tree.

2. The computer-implemented method of claim 1 , wherein the incoming prefix is bounded by a start of the log of operations to a cursor value for a mount operation detected by the client device.

3. The computer-implemented method of claim 1 , further comprising:

receiving, from the content management system, a mount operation for the target namespace, wherein the mount operation is associated with the existing namespace and specifies the mount location in the existing namespace, wherein the target namespace is mounted at the mount location in response to the mount operation.

4. The computer-implemented method of claim 1 , further comprising:

receiving a second mount notification for mounting a nested namespace within the target namespace;

receiving, from the content management system, a second incoming prefix of a second log of operations for the nested namespace;

building a second subtree for the nested namespace based on the second incoming prefix of the second log of operations; and

mounting the second subtree for the nested namespace within the subtree for the target namespace.

5. The computer-implemented method of claim 1 , further comprising:

receiving the operations data from the content management system, wherein the operations data comprises linearized operations across multiple namespaces;

executing the linearized operations; and

updating, based on the execution of the linearized operations, the remote tree.

6. The computer-implemented method of claim 1 , further comprising:

determining that the server state and a file system state are out of sync, wherein the determining is based on a difference between the remote tree and a sync tree representing a known synced state between the server state and the file system state;

generating, based on the difference, a set of operations configured to converge the server state and the file system state; and

managing execution of the set of operations.

7. The computer-implemented method of claim 6 , wherein the remote tree and the sync tree are stored at the client device.

8. The computer-implemented method of claim 6 , wherein the server state and the file system state being out of sync indicates that an action performed on the content items stored by the content management system is not reflected in the content items stored on the client device.

9. A non-transitory computer readable medium comprising instructions, the instructions, when executed by a computing system, cause the computing system to:

prevent a mounting of a target namespace within an existing namespace, represented in a remote tree, before a determination of content items of the target namespace, wherein the remote tree represents a server state for content items stored on a content management system;

receive, from the content management system, an initial portion of a log of operations for the target namespace, wherein the log of operations serves as operations data with respect to the content items of the target namespace;

build a subtree for the target namespace based on the initial portion of the log of operations by incrementally processing a current state after each operation in the log of operations and determining the content items of the target namespace;

after building the subtree by completing the incremental processing of the current state after each operation in the initial portion of the log of operations, validate the subtree does not violate a set of tree constraints associated with the remote tree; and

mount the subtree for the target namespace at a mount location of the remote tree representing the server state for content items stored on the content management system.

10. The non-transitory computer readable medium of claim 9 , wherein the instructions further cause the computing system to:

receive, before the preventing the mounting, from the content management system, a mount operation for the target namespace, wherein the mount operation is associated with the existing namespace and specifies the mount location in the existing namespace, wherein the target namespace is mounted at the mount location in response to the mount operation, and content items of the target namespace are unknown upon receiving the mount operation.

11. The non-transitory computer readable medium of claim 9 , wherein the instructions further cause the computing system to:

receive the operations data from the content management system, wherein the operations data comprises linearized operations across multiple namespaces;

execute the linearized operations; and

update, based on execution of the linearized operations, the remote tree.

12. The non-transitory computer readable medium of claim 9 , wherein the instructions further cause the computing system to:

determine that the server state and a file system state are out of sync based on a difference between the remote tree and a sync tree representing a known synced state between the server state and the file system state;

generate, based on the difference, a set of operations configured to converge the server state and the file system state; and

manage execution of the set of operations.

13. A system comprising:

one or more processors; and

a non-transitory computer-readable medium storing instructions that, when executed by the one or more processors, cause the one or more processors to:

receive, at a client device, a mount notification for mounting a target namespace within an existing namespace represented in a remote tree, wherein the remote tree represents a server state for content items stored on a content management system, and wherein content items of the target namespace are unknown upon receiving the mount notification;

prevent a mounting of the target namespace before a determination of the content items of the target namespace;

receive, from the content management system, an incoming prefix and a subsequent log of operations for the target namespace, wherein the log of operations serves as operations data with respect to content items of the target namespace;

build a subtree for the target namespace, triggered by the receiving of the incoming prefix, by incrementally processing a current state after each operation in the log of operations, and determine the content items of the target namespace; and

after building the subtree by incrementally processing the current state after each operation in the incoming prefix of the log of operations, validate the subtree does not violate a set of tree constraints with the remote tree; and

mount the subtree for the target namespace at a mount location of the remote tree representing the server state for the content items stored on the content management system.

14. The system of claim 13 , wherein the incoming prefix of the log of operations is bounded by a start of the log of operations to a cursor value for a mount operation detected by the content management system.

15. The system of claim 13 , wherein the instructions further cause the one or more processors to:

receive, from the content management system, a mount operation for the target namespace, wherein the mount operation is associated with the existing namespace and specifies the mount location in the existing namespace, wherein the target namespace is mounted at the mount location in response to the mount operation.

16. The system of claim 13 , wherein the instructions further cause the one or more processors to:

receive the operations data from the content management system, wherein the operations data comprises linearized operations across multiple namespaces;

execute the linearized operations; and

update, based on execution of the linearized operations, the remote tree.

17. The system of claim 13 , wherein the instructions further cause the one or more processors to:

determine that the server state and a file system state are out of sync based on a difference between the remote tree and a sync tree representing a known synced state between the server state and the file system state;

generate, based on the difference, a set of operations configured to converge the server state and the file system state; and

manage execution of the set of operations.

18. The computer-implemented method of claim 1 , wherein processing the current state includes:

determining that one or more operations will not be reflected in a final version of the subtree based on a final state resulting from incrementally processing of the current state after each operation in the log of operations; and

based on the one or more operations not being reflected in the final version of the subtree, removing the one or more operations from the final version of the subtree.

19. The computer-implemented method of claim 1 , wherein the mounting the subtree for the target namespace within the existing namespace introduces a dependency between operation logs of the target namespace and operation logs of the existing namespace.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2018
From: YING, ROBERT; KOORAPATI, NIPUNN; GUPTA, GAUTAM
To: DROPBOX, INC.
Reel/Frame 046453/0878 →
Continuity (2)
Provisional Application 62611473 · Dec 28, 2017
Related Publication 20190208012A1 · Jul 4, 2019