IP Library Granted Patent US 10,846,303
Granted Patent B2
US 10,846,303 · App. 16/035,677 · Granted Nov 24, 2020

Storage constrained synchronization engine

Inventors: Isaac Goldberg (San Francisco, CA); Benjamin Zeis Newhouse (San Francisco, CA)
Assignee: Dropbox, Inc.
G06F16/27G06F16/178G06F16/23
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,846,303
App. No.
16/035,677
Granted
Nov 24, 2020
Kind
B2
Abstract

A content management system synchronizes content items across client computing systems connected by a network. If a storage allocation for shared content items on a client device is exceeded by the request to add or edit a content item such that it is enlarged, a client application or the host of content management system selects content items to remove from residence on the client device but keep remotely on content management system. Upon removal of the selected content items, the client application creates shadow items, representing the content item but only containing the metadata of the content item. This creates sufficient space while maintaining user access to all synchronized shared content items. Entries in a file journal may be used to track and manage whether a stored item is a content item or a shadow item.

Claims (59)

1. A method comprising:

receiving, by a client device, an updated file journal entry from a content management system, the updated file journal entry including an updated namespace ID of a content item stored by the content management system;

comparing the updated file journal entry to a plurality of local entries in a local file journal stored by the client device to identify a shadow item on the client device, the shadow item replicating metadata attributes of the content item without storing actual content data of the content item stored by the content management system, wherein the shadow item includes at least a namespace ID of the content item;

updating the identified shadow item by replacing the namespace ID of the shadow item with the updated namespace ID; and

replacing a local file journal entry corresponding to the shadow item with the updated file journal entry.

2. The method of claim 1 , wherein the updated file journal entry includes an updated blocklist of the content item, and further comprising:

determining, based on a comparison between the updated blocklist of the content item and a blocklist of the identified shadow item, that the shadow item is to be replaced with the content item;

downloading, from the content management system, blocks indicated by the updated blocklist of the content item; and

replacing the shadow item on the client device with the content item including the downloaded blocks.

3. The method of claim 1 , wherein the updated file journal entry includes an updated blocklist of the content item, and further comprising:

determining, based on a force reconstruct value associated with the updated file journal entry, that the shadow item is to be replaced with the content item;

downloading, from the content management system, blocks indicated by the updated blocklist of the content item; and

replacing the shadow item on the client device with the content item including the downloaded blocks.

4. The method of claim 1 , wherein the updated file journal entry includes an updated file path and each of the plurality of local entries includes a local file path, and wherein comparing the updated file journal entry to the plurality of local entries further comprises: comparing the updated file path with the local file path of each of the plurality of local entries.

5. The method of claim 4 , further comprising:

determining, based on the comparison of the updated file path and the local file paths, that the shadow item is to be relocated to a new file path; and

relocating the shadow item on the client device at a location indicated by the updated file path.

6. The method of claim 1 , further comprising:

determining, based on the comparison of the updated file journal entry to the plurality of local entries, that the shadow item is pending based on a change by a user of the client device; and

performing conflict resolution based on an updated modification time included in the updated file journal entry and a modification time of the shadow item.

7. The method of claim 6 , further comprising, responsive to determining that the modification time of the shadow item is later than the updated modification time:

committing the change by the user of the client device to the content management system.

8. A non-transitory computer-readable storage medium storing instructions that, when executed by a client device, cause the client device to perform operations comprising:

receiving, by the client device, an updated file journal entry from a content management system, the updated file journal entry including an updated namespace ID of a content item stored by the content management system;

comparing the updated file journal entry to a plurality of local entries in a local file journal stored by the client device to identify a shadow item on the client device, the shadow item replicating metadata attributes of the content item without storing actual content data of the content item stored by the content management system, wherein the shadow item includes at least a namespace ID of the content item;

updating the identified shadow item by replacing the namespace ID of the shadow item with the updated namespace ID; and

replacing a local file journal entry corresponding to the shadow item with the updated file journal entry.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the updated file journal entry includes an updated blocklist of the content item, and further comprising:

determining, based on a comparison between the updated blocklist of the content item and a blocklist of the identified shadow item, that the shadow item is to be replaced with the content item;

downloading, from the content management system, blocks indicated by the updated blocklist of the content item; and

replacing the shadow item on the client device with the content item including the downloaded blocks.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the determination that the shadow item is to be replaced with the content item is made based on a force reconstruct value associated with the updated file journal entry.

11. The non-transitory computer-readable storage medium of claim 8 , wherein the updated file journal entry includes an updated file path and each of the plurality of local entries includes a local file path, and wherein comparing the updated file journal entry to the plurality of local entries further comprises: comparing the updated file path with the local file path of each of the plurality of local entries.

12. The non-transitory computer-readable storage medium of claim 11 , further comprising:

determining, based on the comparison of the updated file path and the local file paths, that the shadow item is to be relocated to a new file path; and

relocating the shadow item on the client device at a location indicated by the updated file path.

13. The non-transitory computer-readable storage medium of claim 8 , further comprising:

determining, based on the comparison of the updated file journal entry to the plurality of local entries, that the shadow item is pending based on a change by a user of the client device; and

performing conflict resolution based on an updated modification time included in the updated file journal entry and a modification time of the shadow item.

14. The non-transitory computer-readable storage medium of claim 13 , further comprising, responsive to determining that the modification time of the shadow item is later than the updated modification time: committing the change by the user of the client device to the content management system.

15. A system comprising:

one or more processors, and

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

receiving, by a client device, an updated file journal entry from a content management system, the updated file journal entry including an updated namespace ID of a content item stored by the content management system;

comparing the updated file journal entry to a plurality of local entries in a local file journal stored by the client device to identify a shadow item on the client device, the shadow item replicating metadata attributes of the content item without storing actual content data of the content item stored by the content management system, wherein the shadow item includes at least a namespace ID of the content item;

updating the identified shadow item by replacing the namespace ID of the shadow item with the updated namespace ID; and

replacing a local file journal entry corresponding to the shadow item with the updated file journal entry.

16. The system of claim 15 , wherein the updated file journal entry includes an updated blocklist of the content item, and further comprising:

determining, based on a comparison between the updated blocklist of the content item and a blocklist of the identified shadow item, that the shadow item is to be replaced with the content item;

downloading, from the content management system, blocks indicated by the updated blocklist of the content item; and

replacing the shadow item on the client device with the content item including the downloaded blocks.

17. The system of claim 16 , wherein the determination that the shadow item is to be replaced with the content item is made based on a force reconstruct value associated with the updated file journal entry.

18. The system of claim 15 , wherein the updated file journal entry includes an updated file path and each of the plurality of local entries includes a local file path, and wherein comparing the updated file journal entry to the plurality of local entries further comprises: comparing the updated file path with the local file path of each of the plurality of local entries.

19. The system of claim 18 , further comprising:

determining, based on the comparison of the updated file path and the local file paths, that the shadow item is to be relocated to a new file path; and

relocating the shadow item on the client device at a location indicated by the updated file path.

20. The system of claim 15 , further comprising:

determining, based on the comparison of the updated file journal entry to the plurality of local entries, that the shadow item is pending based on a change by a user of the client device; and

performing conflict resolution based on an updated modification time included in the updated file journal entry and a modification time of the shadow item.

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 16, 2018
From: GOLDBERG, ISAAC; NEWHOUSE, BENJAMIN ZEIS
To: DROPBOX, INC.
Reel/Frame 046556/0050 →