IP Library Granted Patent US 10,762,104
Granted Patent B2
US 10,762,104 · App. 15/858,410 · Granted Sep 1, 2020

File journal interface for synchronizing content

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,762,104
App. No.
15/858,410
Granted
Sep 1, 2020
Kind
B2
Abstract

In some embodiments, a system for synchronizing content with client devices receives a request from a client device to synchronize operations pertaining to content items associated with a user account registered at the system. The request can include the operations and a cursor identifying a current position of the client in a journal of revisions on the system. Based on the operations, the system generates linearized operations associated with the content items. The linearized operations can include a respective operation derived for each of the content items from one or more of the operations. The system converts each respective operation in the linearized operations to a respective revision for the journal of revisions and, based on the cursor, determines whether the respective revision conflicts with revisions in the journal. When the respective revision does not conflict with revisions in the journal, the system adds the respective revision to the journal.

Claims (43)

1. A method comprising:

receiving a request from a client device to synchronize operations pertaining to content items associated with a user account registered at a content management system, the request comprising the operations pertaining to the content items and a cursor identifying a current position of the client device in a journal of revisions on the content management system;

based on the operations, generating a set of linearized operations associated with the content items, the set of linearized operations comprising a respective operation derived for each content item from one or more of the operations;

converting each respective operation in the set of linearized operations to a respective revision for the journal of revisions, the respective revision comprising a row of values in the journal reflecting the respective operation;

based on the cursor, determining that each respective revision has no conflicts with one or more revisions in the journal and that the current position in the journal comprises a last revision in the journal associated with a respective namespace;

identifying a previous revision in the journal which corresponds to the respective namespace and a same content item as the respective revision;

comparing a first revision number identified in the cursor for the respective namespace with a highest revision number in the journal corresponding to the respective namespace, the first revision number indicating the current position of the client device in the journal for the respective namespace;

determining that the first revision number identified in the cursor for the respective namespace is higher than the highest revision number in the journal corresponding to the respective namespace;

identifying the previous revision based on the highest revision number, the previous revision corresponding to the highest revision number;

determining that the previous revision and the respective revision result in a valid sequence of revisions;

adding the respective revision to the journal;

generating a second set of linearized operations associated with the content items reflecting a second set of respective revisions;

generating a second cursor identifying a second position in the journal of revisions based on the second set of linearized operations; and

sending, to the client device, the second set of linearized operations and the second cursor.

2. The method of claim 1 , wherein the cursor identifies the current position in the journal based on a respective namespace identifier of one or more namespaces associated with the user account and a respective revision number associated with the respective namespace identifier.

3. The method of claim 1 , wherein determining whether each respective revision conflicts with one or more revisions in the journal comprises:

identifying a respective namespace associated with the respective revision; and

based on the cursor, determining whether the current position in the journal comprises a last revision in the journal associated with the respective namespace.

4. The method of claim 1 , further comprising determining that a particular revision conflicts with one or more revisions in the journal when the current position in the journal does not comprise the last revision in the journal associated with a namespace of the particular revision.

5. The method of claim 1 , wherein the row of values comprises respective values for a plurality of fields in the journal, the respective values being calculated based on the respective operation.

6. The method of claim 1 , wherein the respective operation for a particular content item is derived from a plurality of the operations associated with the particular content item, the respective operation being based on a result of the plurality of the operations when executed in a linear order.

7. The method of claim 1 , wherein the second cursor identifies current revisions in the journal associated with one or more namespaces.

8. A system comprising:

one or more processors; and

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

receive a request from a client device to synchronize operations pertaining to content items associated with a user account registered at the system, the request comprising the operations associated with the content items and a cursor identifying a current position of the client device in a journal of revisions on the system;

based on the operations, generate a set of linearized operations associated with the content items, the set of linearized operations comprising a respective operation derived for each of the content items derived from one or more of the operations and that the current position in the journal comprises a last revision in the journal associated with a respective namespace;

identify a previous revision in the journal which corresponds to the respective namespace and a same content item as the respective operation;

compare a first revision number identified in the cursor for the respective namespace with a highest revision number in the journal corresponding to the respective namespace, the first revision number indicating the current position of the client device in the journal for the respective namespace;

determine that the first revision number identified in the cursor for the respective namespace is higher than the highest revision number in the journal corresponding to the respective namespace;

identify the previous revision based on the highest revision number, the previous revision corresponding to the highest revision number;

determine that the previous revision and the respective operation result in a valid sequence of revisions;

convert each respective operation in the set of linearized operations to a respective revision for the journal of revisions, the respective revision comprising a row of values in the journal reflecting the respective operation;

based on the cursor, determine that the respective revision has no conflicts with one or more revisions in the journal;

add the respective revision to the journal;

generate a second set of linearized operations associated with the content items reflecting a second set of respective revisions;

generate a second cursor identifying a second position in the journal of revisions based on the second set of linearized operations; and

send, to the client device, the second set of linearized operations and the second cursor.

9. The system of claim 8 , claim 1 , wherein the cursor identifies the current position in the journal based on a respective namespace identifier of one or more namespaces associated with the user account and a respective revision number associated with the respective namespace identifier.

10. The system of claim 8 , wherein determining whether the respective revision conflicts with one or more revisions in the journal comprises:

identifying a respective namespace associated with the respective operation; and

based on the cursor, determining whether the current position in the journal comprises a last revision in the journal associated with the respective namespace.

11. The system of claim 8 , wherein the respective operation for a particular content item is derived from a plurality of the operations associated with the particular content item, the respective operation being based on a result of the plurality of the operations when executed in a linear order.

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 3, 2018
From: JUBB, ELMER CHARLES, IV; KOORAPATI, NIPUNN; YING, ROBERT
To: DROPBOX, INC.
Reel/Frame 046257/0834 →