IP Library Granted Patent US 11,496,552
Granted Patent B2
US 11,496,552 · App. 17/474,958 · Granted Nov 8, 2022

Intent tracking for asynchronous operations

Inventors: Vrushali Kulkarni (Foster City, CA); Braden Walker (San Francisco, CA); David Wetterau (San Francisco, CA); David Aeschlimann (San Francisco, CA); Luan Dos Santos (Sammamish, WA)
Assignee: Dropbox, Inc.
H04L67/10
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,496,552
App. No.
17/474,958
Granted
Nov 8, 2022
Kind
B2
Abstract

Systems and methods are provided for intent tracking asynchronous operations. An example method can include receiving, at a content management system (CMS), a first request to perform an operation on a content item stored at the CMS; adding the request to perform the operation to a queue of operations to be processed by the CMS; and prior to completing the operation: receiving, from a client device associated with a user account registered at the CMS, a second request to access the content item; in response to the second request, determining a predicted state of the content item, the predicted state of the content item reflecting a result of performing the operation on the content item; and providing, to the client device, a response including the predicted state of the content item.

Claims (65)

1. A method comprising:

receiving, from a client device associated with a user account registered at a content management system, a request to access a content item stored at the content management system, the request being received prior to completing or performing an operation on the content item that was initiated before the request;

in response to the request to access the content item, determining a predicted state of the content item, the predicted state of the content item reflecting a result of performing the operation on the content item; and

providing a response to the request to access the content item while the operation is in progress, the response including the predicted state of the content item that causes at least one of the content item, a parent content item associated with the content item, or a child content item of the content item to appear, as if the operation has been completed.

2. The method of claim 1 , further comprising:

receiving, from a different client device, a request to perform the operation on the content item, the request to perform the operation being received prior to the request to access the content item; and

adding the operation to a queue of operations at the content management system.

3. The method of claim 1 , wherein determining the predicted state of the content item comprises:

determining a state of the content item corresponding to a time before the operation;

determining the result of performing the operation on the content item; and

based on the result of performing the operation on the content item, determining the predicted state of the content item.

4. The method of claim 3 , wherein providing the response to the request to access the content item comprises:

modifying the state of the content item to reflect the predicted state of the content item; and

providing the content item according to the predicted state.

5. The method of claim 3 , further comprising:

storing the state of the content item in a first table corresponding to a source namespace where the content item is located prior to the operation; and

storing the predicted state of the content item in a second table corresponding to a destination namespace where the content item is predicted to be located after the operation is performed on the content item.

6. The method of claim 1 , wherein the operation comprises a set of atomic operations, and wherein determining the predicted state of the content item comprises:

determining one or more interdependencies of the set of atomic operations; and

sequentially computing a result of performing the set of atomic operations according to the one or more interdependencies.

7. The method of claim 1 , wherein the operation comprises a move operation, and wherein determining the predicted state of the content item comprises:

determining a first state of a source location of the content item, the first state of the source location corresponding to a time before the operation was initiated or completed; and

determining a second state of a destination location of the content item, the second state comprising the predicted state of the content item after the operation is performed.

8. The method of claim 7 , further comprising:

retrieving the first state of the source location from a first table of state data of the source location;

based on the first state and the operation, determining the second state of the destination location;

updating, based on the second state, a second table of state data of the destination location to include the predicted state; and

providing the predicted state to the client device, the predicted state causing the content item to appear at the destination location while the move operation is in progress.

9. The method of claim 7 , wherein determining the first state comprises determining a first predicted result of deleting the content item from the source location, wherein determining the second state comprises determining a second predicted result of adding the content item to the destination location, wherein the first state is based on the first predicted result and the second state is based on the second predicted result.

10. The method of claim 1 , wherein the operation comprises a namespace operation, wherein the namespace operation comprises at least one of mounting a new namespace for the user account and partitioning the content item to create the new namespace, and wherein determining the predicted state of the content item comprises:

verifying that the user account has permissions that allow the user account to access the new namespace associated with the namespace operation;

prior to generating the new namespace, pre-allocating a namespace identifier to the new namespace;

computing the predicted state for the new namespace; and

providing, in the response to the request to access the content item, the predicted state for the new namespace, the predicted state comprising the namespace identifier and a namespace state of the new namespace.

11. A content management system comprising:

one or more processors; and

at least one non-transitory computer readable medium having stored thereon instructions that, when executed by the one or more processors, cause the one or more processors to:

receive, from a client device associated with a user account registered at the content management system, a request to access a content item stored at the content management system, the request being received prior to completing or performing an operation on the content item that was initiated before the request;

in response to the request to access the content item, determine a predicted state of the content item, the predicted state of the content item reflecting a result of performing the operation on the content item; and

provide a response to the request to access the content item while the operation is in progress, the response including the predicted state of the content item that causes at least one of the content item, a parent content item associated with the content item, or a child content item of the content item to appear, as if the operation has been completed.

12. The content management system of claim 11 , the at least one non-transitory computer readable medium having stored thereon instructions that, when executed by the one or more processors, cause the content management system to:

receive, from a different client device, a request to perform the operation on the content item, the request to perform the operation being received prior to the request to access the content item; and

add the operation to a queue of operations at the content management system.

13. The content management system of claim 11 , wherein determining the predicted state of the content item comprises:

determining a state of the content item corresponding to a time before the operation;

determining the result of performing the operation on the content item; and

based on the result of performing the operation on the content item, determining the predicted state of the content item.

14. The content management system of claim 13 , wherein providing the response to the request to access the content item comprises:

modifying the state of the content item to reflect the predicted state of the content item; and

providing the content item according to the predicted state.

15. The content management system of claim 11 , wherein the operation comprises a set of atomic operations, and wherein determining the predicted state of the content item comprises:

determining one or more interdependencies of the set of atomic operations; and

sequentially computing a result of performing the set of atomic operations according to the one or more interdependencies.

16. The content management system of claim 11 , wherein the operation comprises a move operation, and wherein determining the predicted state of the content item comprises:

determining a first state of a source location of the content item, the first state of the source location corresponding to a time before the operation was initiated or completed; and

determining a second state of a destination location of the content item, the second state comprising the predicted state of the content item after the operation is performed.

17. The content management system of claim 11 , wherein the operation comprises a namespace operation, wherein the namespace operation comprises at least one of mounting a new namespace for the user account and partitioning the content item to create the new namespace, and wherein determining the predicted state of the content item comprises:

verifying that the user account has permissions that allow the user account to access the new namespace associated with the namespace operation;

prior to generating the new namespace, pre-allocating a namespace identifier to the new namespace;

computing the predicted state for the new namespace; and

providing, in the response to the request to access the content item, the predicted state for the new namespace, the predicted state comprising the namespace identifier and a namespace state of the new namespace.

18. A non-transitory computer-readable medium comprising instructions, the instructions, when executed by one or more processors, cause the one or more processors to:

receive, from a client device associated with a user account registered at a content management system, a request to access a content item stored at the content management system, the request being received prior to completing or performing an operation on the content item that was initiated before the request;

in response to the request to access the content item, determine a predicted state of the content item, the predicted state of the content item reflecting a result of performing the operation on the content item; and

provide a response to the request to access the content item while the operation is in progress, the response including the predicted state of the content item that causes at least one of the content item, a parent content item associated with the content item, or a child content item of the content item to appear, as if the operation has been completed.

Assignments (2)
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2021
From: KULKARNI, VRUSHALI; WALKER, BRADEN; WETTERAU, DAVID; AESCHLIMANN, DAVID; DOS SANTOS, LUAN
To: DROPBOX, INC.
Reel/Frame 057480/0326 →
Continuity (2)
Continuation 17217600 · Mar 30, 2021
Related Publication 20220321640A1 · Oct 6, 2022