IP Library Granted Patent US 9,613,044
Granted Patent B2
US 9,613,044 · App. 14/726,000 · Granted Apr 4, 2017

Maintaining concurrency and consistency of globally unique identifiers

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,613,044
App. No.
14/726,000
Granted
Apr 4, 2017
Kind
B2
Abstract

Systems, methods, and computer-readable storage media for ensuring data consistency and concurrency for globally unique identifiers (GUIDs) and associated content items via locking. A content management system configured to practice the method can receive, from a client device, a request to perform a content item operation in a storage environment that affects a GUID. Then the content management system can acquire a first mutex for a namespace associated with the content item operation, such as an application-level lock, and acquire a second mutex for the GUID, such as a row-level lock in a database table. After acquiring the locks, the content management system can perform the content item operation according the request, and update the GUID based on the content item operation. Then the content management system can release the mutexes and provide a confirmation to the client device in response to the request.

Claims (47)

1. A system comprising:

a processor; and

a non-transitory computer-readable storage medium having stored therein processor-executable instructions for causing the processor to:

receive a request to modify a content item associated with a globally unique identifier where the content item is stored in a multi-user network-based content item management environment and the globally unique identifier is associated with the content item, a storage location and at least one authorized user having access to the content item;

acquire a first mutex for a namespace associated with the content item;

acquire a second mutex for the globally unique identifier;

modify the content item associated with the globally unique identifier according to the request;

release the first mutex and the second mutex; and

provide a confirmation in response to the request.

2. The system of claim 1 , wherein the globally unique identifier maps to a plurality of revisions of the content item.

3. The system of claim 1 , wherein the globally unique identifier maps to a path in the storage environment.

4. The system of claim 1 , wherein the globally unique identifier maps to a branch point in a content item storage system of the storage environment.

5. The system of claim 1 , wherein mappings associated with the globally unique identifier are stored in tables sharded across multiple computing devices.

6. The system of claim 5 , wherein the mappings are sharded using a prefix of the globally unique identifier as a key in to a global table that maps the prefix to a corresponding one of the multiple computing devices storing a respective shard.

7. A computer-implemented method comprising:

receiving a request to modify a globally unique identifier associated with a content item in a multi-user network-based content item management environment storing content items addressable by globally unique identifiers unique within the content item management environment, wherein each globally unique identifier is associated with a respective content item, a respective storage location, and at least one authorized user having access to the respective content item;

acquiring a first mutex for a namespace associated with the content item;

acquiring a second mutex for the globally unique identifier;

modifying, via a processor, the globally unique identifier according to the request;

releasing the first mutex and the second mutex; and

providing a confirmation in response to the request.

8. The method of claim 7 , further comprising:

determining that a first database commit succeeds for a server file journal upon modifying the globally unique identifier;

determining that a second database commit fails for a globally unique identifier database upon modifying the globally unique identifier; and

modifying the globally unique identifier a second time.

9. The method of claim 7 , wherein the second mutex comprises a row-level lock in a database.

10. The method of claim 9 , further comprising, prior to acquiring the second mutex:

confirming that a corresponding row, for the row-level lock, exists in the database.

11. The method of claim 7 , wherein the request indicates a plurality of globally unique identifiers, the method further comprising:

identifying that one of the plurality of globally unique identifiers is no longer needed; and

updating a mapping for the one of the plurality of globally unique identifiers to indicated a status of abandoned.

12. The method of claim 7 , wherein the first mutex comprises an application-level lock for the namespace.

13. The method of claim 7 , wherein the request to modify the globally unique identifier is received from a client device, and wherein the confirmation is provided to the client device.

14. A non-transitory computer-readable storage medium having stored therein instructions which, when executed by a processor, cause the processor to perform a method comprising:

receiving, from a client device, a request to perform a content item operation that affects a globally unique identifier associated with a content item, the content item is stored in a multi-user network-based content item management environment storing content items addressable by globally unique identifiers unique within the content item management environment, wherein each globally unique identifier is associated with a respective content item, a respective storage location, and at least one authorized user having access to the respective content item;

acquiring a first mutex for a namespace associated with the content item operation;

acquiring a second mutex for the globally unique identifier;

performing the content item operation according to the request;

updating the globally unique identifier based on the content item operation;

releasing the first mutex and the second mutex; and

providing a confirmation to the client device in response to the request.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the globally unique identifier is at least a 128-bit integer.

16. The non-transitory computer-readable storage medium of claim 14 , wherein the second mutex comprises a row-level lock in a database.

17. The non-transitory computer-readable storage medium of claim 14 , further comprising, prior to acquiring the second mutex:

confirming that a corresponding row, for the row-level lock, exists in the database.

18. The non-transitory computer-readable storage medium of claim 14 , wherein the first mutex comprises an application-level lock for the namespace.

19. The non-transitory computer-readable storage medium of claim 14 , wherein the confirmation indicates a deviation from the content item operation requested by the client 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 Sep 22, 2015
From: HUNTER, RIAN
To: DROPBOX, INC.
Reel/Frame 036660/0417 →