IP Library Granted Patent US 9,697,269
Granted Patent B2
US 9,697,269 · App. 14/979,268 · Granted Jul 4, 2017

Content item block replication 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,697,269
App. No.
14/979,268
Granted
Jul 4, 2017
Kind
B2
Abstract

A content item block replication protocol for multi-premises hosting of digital content items. In one embodiment, for example, a method comprises: receiving, from a server, a server journal entry identifying one or more content item blocks of a content item represented by the server journal entry; storing a replication task log entry corresponding to the server journal entry in a replication task log, the replication task log entry identifying the one or more content item blocks of the content item represented by the server journal entry and identifying a block server; and either offering to send the one or more content item blocks identified in the replication task log entry to the block server identified in the replication task log entry, or downloading the one or more content item blocks identified in the replication task log entry from the block server identified in the replication task log entry.

Claims (67)

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:

receiving, from a server, a server journal entry, the server journal entry identifying a plurality of content item blocks of a content item represented by the server journal entry;

storing a replication task log entry corresponding to the server journal entry in a replication task log, the replication task log entry identifying the plurality of content item blocks of the content item represented by the server journal entry and identifying an on-premises block server;

offering to send the plurality of content item blocks identified in the replication task log entry to the on-premises block server identified in the replication task log entry;

receiving, from the on-premises block server, an acceptance of the offer to send the plurality of content item blocks, the acceptance identifying less than all of the plurality of content item blocks;

sending less than all of the plurality of content item blocks to the on-premises block server; and

updating metadata of the replication task log entry to indicate replication task completion after successfully sending less than all of the plurality of content item blocks to the on-premises block server.

2. The method of claim 1 , the operations further comprising:

prior to receiving the server journal entry from the server, sending, to the server, a current client cursor value for a content item namespace to which the content item belongs;

receiving the server journal entry in response sending the current client cursor value, the server journal entry comprising a server journal cursor value for the content item namespace; and

updating the current client cursor value for the content item namespace to equal the server journal cursor value for the content item namespace from the server journal entry.

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

4. The method of claim 1 , wherein:

the server journal entry is a first server journal entry;

the replication task log entry is a first replication task log entry;

the content item is a first content item;

the operations further comprise:

receiving, from a server, a second server journal entry that is not the first server journal entry, the second server journal entry identifying one or more content item blocks of a second content item, that is not the first content item, represented by the second server journal entry;

storing a second replication task log entry, that is not the first replication task log entry, corresponding to the second server journal entry in the replication task log, the second replication task log entry identifying the one or more content item blocks of the second content item represented by the second server journal entry and identifying an off-premises block server of an online content management service; and

downloading the one or more content item blocks identified in the second replication task log entry from the off-premises block server identified in the second replication task log entry.

5. The method of claim 4 , the operations further comprising:

updating metadata of the second replication task log entry to indicate replication task completion after successfully downloading the one or more content item blocks from the off-premises block server.

6. The method of claim 4 , wherein:

the second server journal entry identifies a plurality of content item blocks of the second content item represented by the second server journal entry;

the second replication task log entry identifies the plurality of content item blocks of the second content item represented by the second server journal entry;

the operations further comprise determining that at least one of the plurality of content item blocks of the second content item is already stored at the computing device; and

wherein the one or more content item blocks downloaded from the off-premises block server does not include the at least one content item block already stored at the computing device.

7. The method of claim 4 , the operations further comprising:

prior to receiving the second server journal entry from the server, sending, to the server, a current client cursor value for a content item namespace to which the second content item belongs;

receiving the second server journal entry in response sending the current client cursor value for the content item namespace, the second server journal entry comprising a server journal cursor value for the content item namespace; and

updating the current client cursor value for the content item namespace to equal the server journal cursor value for the content item namespace from the server journal entry.

8. The method of claim 4 , the operations further comprising:

serving the one or more content item blocks of the second content item to one or more personal computing devices that request to download the one or more content item blocks.

9. A computing device, comprising: one or more processors; and storage media storing one or more computer programs comprising instructions configured for:

receiving, from a server, a server journal entry, the server journal entry identifying a plurality of content item blocks of a content item represented by the server journal entry;

storing a replication task log entry corresponding to the server journal entry in a replication task log, the replication task log entry identifying the plurality of content item blocks of the content item represented by the server journal entry and identifying an on-premises block server;

offering to send the plurality of content item blocks identified in the replication task log entry to the on-premises block server identified in the replication task log entry;

receiving, from the on-premises block server, an acceptance of the offer to send the plurality of content item blocks, the acceptance identifying less than all of the plurality of content item blocks;

sending less than all of the plurality of content item blocks to the on-premises block server; and

updating metadata of the replication task log entry to indicate replication task completion after successfully sending less than all of the plurality of content item blocks to the on-premises block server.

10. The computing device of claim 9 , the instructions further configured for:

prior to receiving the server journal entry from the server, sending, to the server, a current client cursor value for a content item namespace to which the content item belongs;

receiving the server journal entry in response sending the current client cursor value, the server journal entry comprising a server journal cursor value for the content item namespace; and

updating the current client cursor value for the content item namespace to equal the server journal cursor value for the content item namespace from the server journal entry.

11. The computing device of claim 9 , wherein the on-premises block server is connected to the same local area network as the computing device.

12. The computing device of claim 9 , wherein:

the server journal entry is a first server journal entry;

the replication task log entry is a first replication task log entry;

the content item is a first content item;

the instructions further configured for:

receiving, from a server, a second server journal entry that is not the first server journal entry, the second server journal entry identifying one or more content item blocks of a second content item, that is not the first content item, represented by the second server journal entry;

storing a second replication task log entry, that is not the first replication task log entry, corresponding to the second server journal entry in the replication task log, the second replication task log entry identifying the one or more content item blocks of the second content item represented by the second server journal entry and identifying an off-premises block server of an online content management service; and

downloading the one or more content item blocks identified in the second replication task log entry from the off-premises block server identified in the second replication task log entry.

13. The computing device of claim 12 , the instructions further configured for:

updating metadata of the second replication task log entry to indicate replication task completion after successfully downloading the one or more content item blocks from the off-premises block server.

14. The computing device of claim 12 , wherein:

the second server journal entry identifies a plurality of content item blocks of the content item represented by the second server journal entry;

the second replication task log entry identifies the plurality of content item blocks of the content item represented by the second server journal entry;

the instructions further configured for determining that at least one of the plurality of content item blocks of the second content item is already stored at the computing device; and

wherein the one or more content item blocks downloaded from the off-premises block server does not include the at least one content item block already stored at the computing device.

15. The computing device of claim 12 , the instructions further configured for:

prior to receiving the second server journal entry from the server, sending, to the server, a current client cursor value for a content item namespace to which the second content item belongs;

receiving the second server journal entry in response sending the current client cursor value for the content item namespace, the second server journal entry comprising a server journal cursor value for the content item namespace; and

updating the current client cursor value for the content item namespace to equal the server journal cursor value for the content item namespace from the server journal entry.

16. The computing device of claim 12 , the instructions further configured for:

serving the one or more content item blocks of the second content item to one or more personal computing devices that request to download the one or more content item blocks.

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 May 25, 2016
From: KOORAPATI, NIPUNN; RUDE, CHRISTOPHER; VON MUHLEN, MARCIO; BUNGER, NILS
To: DROPBOX, INC.
Reel/Frame 038720/0750 →