IP Library Granted Patent US 9,479,567
Granted Patent B1
US 9,479,567 · App. 14/979,234 · Granted Oct 25, 2016

Synchronization protocol for multi-premises hosting of digital content items

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,479,567
App. No.
14/979,234
Granted
Oct 25, 2016
Kind
B1
Abstract

A synchronization protocol for multi-premises hosting of digital content items. In one embodiments, for example, a method, comprising: detecting creation or modification of a content item; determining a content item namespace to which the content item belongs; obtaining an identifier of a block server to which the content item namespace is assigned; and uploading any content item blocks of the content item to the block server that are not already stored at the block server.

Claims (61)

1. A method, comprising:

at a computing device comprising one or more processors and storage media storing one or more computer programs executed by the one or more processors to perform the method, performing operations comprising:

detecting creation or modification of a content item;

determining a content item namespace to which the content item belongs;

obtaining an identifier of a block server to which the content item namespace is assigned;

uploading any content item blocks of the content item to the block server that are not already stored at the block server;

determining a current client journal cursor value, the current client journal cursor value representing how up-to-date the content item namespace mounted at the computing device is with respect to any newer content item changes in the content item namespace that are committed to an online content management service and uploaded to the block server to which the content item namespace is assigned;

providing, to a server, the current client journal cursor value in association with an identifier of the content item namespace and an identifier of the block server to which the content item namespace is assigned;

receiving, from the server, a list of one or more server journal entries, each server journal entry in the list identifying one or more content item blocks of a content item represented by the server journal entry, each server journal entry in the list having a server journal cursor value that is greater than the current client journal cursor value of the computing device; and

for each server journal entry in the list of one or more server journal entries, downloading, from the block server, any content item blocks of the content item represented by the server journal entry that are not already stored at the computing device.

2. The method of claim 1 , wherein the operation of detecting the content item comprises the operation of receiving a notification from an operating system of the computing device when a file in a file system corresponding to the content item is added or modified.

3. The method of claim 1 , wherein the operation of determining the content item namespace to which the new content item belongs is based on a file system path to the content item in a file system of the computing device.

4. The method of claim 1 , wherein the operation of obtaining the block server identifier comprises the operation of accessing a mapping stored at the computing device that associates each identifier of one or more identifiers of one or more content item namespaces mounted at the computing device with an identifier of a block server to which the identified content item namespace is assigned.

5. The method of claim 1 , wherein the operations further comprise:

determining a first list of one or more content item block hashes of one or more content item blocks that constitute the content item;

providing the first list to a server;

obtaining a second list from the server, the second list identifying one or more content item block hashes in the first list corresponding to one or more content item blocks that are not already stored at the block server; and

uploading the one or more content item blocks that are not already stored at the block server.

6. The method of claim 1 , wherein:

the content item is a first content item;

the block server is a first block server;

the content item namespace is a first content item namespace;

the operations further comprise:

detecting creation or modification of a second content item that is not the first content item;

determining a second content item namespace, that is not the first content item namespace, to which the second content item belongs;

obtaining an identifier of a second block server, that is not the first block server, to which the second content item namespace is assigned; and

uploading any content item blocks of the second content item that are not already stored at the second block server.

7. The method of claim 1 , the operations further comprising resolving the identifier of the block server to a network address of the block server.

8. The method of claim 1 , wherein the block server is connected to the same local area network as the computing device.

9. The method of claim 1 , wherein the block server is operated by an online content management service.

10. A computing device, comprising:

one or more processors; and

storage media storing one or more computer programs comprising instructions configured for:

detecting creation or modification of a content item;

determining a content item namespace to which the content item belongs;

obtaining an identifier of a block server to which the content item namespace is assigned;

uploading any content item blocks of the content item to the block server that are not already stored at the block server;

determining a current client journal cursor value, the current client journal cursor value representing how up-to-date the content item namespace mounted at the computing device is with respect to any newer content item changes in the content item namespace that are committed to an online content management service and uploaded to the block server to which the content item namespace is assigned;

providing, to a server, the current client journal cursor value in association with an identifier of the content item namespace and an identifier of the block server to which the content item namespace is assigned;

receiving, from the server, a list of one or more server journal entries, each server journal entry in the list identifying one or more content item blocks of a content item represented by the server journal entry, each server journal entry in the list having a server journal cursor value that is greater than the current client journal cursor value of the computing device; and

for each server journal entry in the list of one or more server journal entries, downloading, from the block server, any content item blocks of the content item represented by the server journal entry that are not already stored at the computing device.

11. The computing device of claim 10 , wherein the block server is operated by an online content management service.

12. The computing device of claim 10 , wherein the instructions configured for detecting the content item comprise instructions configured for receiving a notification from an operating system of the computing device when a file in a file system corresponding to the content item is added or modified.

13. The computing device of claim 10 , wherein the instructions configured for determining the content item namespace to which the new content item belongs is based on a file system path to the content item in a file system of the computing device.

14. The computing device of claim 10 , wherein the instructions configured for obtaining the block server identifier comprise instructions configured for accessing a mapping stored at the computing device that associates each identifier of one or more identifiers of one or more content item namespaces mounted at the computing device with an identifier of a block server to which the identified content item namespace is assigned.

15. The computing device of claim 10 , wherein the instructions are further configured for:

determining a first list of one or more content item block hashes of one or more content item blocks that constitute the content item;

providing the first list to a server;

obtaining a second list from the server, the second list identifying one or more content item block hashes in the first list corresponding to one or more content item blocks that are not already stored at the block server; and

uploading the one or more content item blocks that are not already stored at the block server.

16. The computing device of claim 10 , wherein:

the content item is a first content item;

the block server is a first block server;

the content item namespace is a first content item namespace;

the instructions are further configured for:

detecting creation or modification of a second content item that is not the first content item;

determining a second content item namespace, that is not the first content item namespace, to which the second content item belongs;

obtaining an identifier of a second block server, that is not the first block server, to which the second content item namespace is assigned; and

uploading any content item blocks of the second content item that are not already stored at the second block server.

17. The computing device of claim 10 , the instructions are further configured for resolving the identifier of the block server to a network address of the block server.

18. The computing device of claim 10 , wherein the block server is connected to the same local area network as the computing device.

Assignments (6)
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 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
SECURITY INTEREST Recorded Apr 14, 2017
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042254/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: KOORAPATI, NIPUNN; RUDE, CHRISTOPHER; VON MUHLEN, MARCIO; BUNGER, NILS
To: DROPBOX, INC.
Reel/Frame 038803/0836 →