IP Library Granted Patent US 11,782,906
Granted Patent B2
US 11,782,906 · App. 17/646,457 · Granted Oct 10, 2023

Decentralized two-phase commit

Inventors: Ovais Ahmad Khan (Woodinville, WA); David Andrew Killian (Seattle, WA); James Daniel Baird (Seattle, WA); Tittu Jose (Sammamish, WA); Arunachalam Thirupathi (Redmond, WA)
Assignee: Snap Inc.
G06F16/2379G06F16/278H04L67/1097
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 11,782,906
App. No.
17/646,457
Granted
Oct 10, 2023
Kind
B2
Abstract

A decentralized two-phase commit in a datastore or database includes determining pre-validating a transaction, writing first metadata to a leader partition, the first metadata including a state indicating preparing and mutations of the transaction, and writing second metadata of a follower partition to indicate the follower partition is locked by the leader partition. The decentralized two-phase commit further includes updating the state of the first metadata to indicate committed and performing the transaction on the leader partition, performing the transaction on the follower partition and unlocking the follower partition, and updating the first metadata to remove the mutations of the transaction and updating the state of the first metadata to indicate the transaction is completed. The decentralized two-phase commit may further include selecting a leader partition key and updating the state of the first metadata to indicate committed unapplied.

Claims (58)

1. A method performed by a computing device, the method comprising:

pre-validating a transaction;

writing first metadata to a leader partition, the first metadata comprising a state indicating preparing and mutations of the transaction;

writing second metadata of a follower partition to indicate the follower partition is locked by the leader partition;

updating the state of the first metadata to indicate committed and performing the transaction on the leader partition;

performing the transaction on the follower partition and unlocking the follower partition; and

updating the first metadata to remove the mutations of the transaction and updating the state of the first metadata to indicate the transaction is completed, wherein the leader partition and the follower partition are part of a datastore or database, wherein the leader partition and the follower partition are different portions of a datastore or database.

2. The method of claim 1 further comprising:

before writing the first metadata to the leader partition, selecting a leader partition key.

3. The method of claim 1 further comprising:

after the performing the transaction on the follower partition, updating the state of the first metadata to indicate committed unapplied.

4. The method of claim 1 wherein the transaction is a two-phase transaction.

5. The method of claim 1 wherein the first metadata is stored in a row associated with a key of the leader partition and the second metadata is stored in a row associated with a key of the follower partition.

6. The method of claim 1 wherein the transaction comprises a two-phase transaction wherein a data field of the leader partition is changed and a data field of the follower partition is changed.

7. The method of claim 1 wherein pre-validating the transaction comprises:

determining that the leader partition and the follower partition are not locked.

8. The method of claim 1 wherein the updating the state of the first metadata to indicate committed and the performing the transaction on the leader partition are performed atomically and wherein the performing the transaction on the follower partition and unlocking the follower partition is performed atomically.

9. The method of claim 1 the updating the state of the first metadata to indicate committed and performing the transaction on the leader partition further comprises: updating a value of a version of the leader partition and wherein the performing the transaction on the follower partition and unlocking the follower partition further comprises: updating a value of a version of the follower partition.

10. The method of claim 1 wherein the pre-validating the transaction further comprises:

storing a version of the follower partition; and

storing a version of the leader partition.

11. The method of claim 10 wherein the writing the first metadata to the leader partition, the first metadata comprising the state indicating preparing and the mutations of the transaction further comprises:

accessing a version of the follower partition and aborting the method if the version is nota same version as the stored version of the follower partition.

12. The method of claim 10 wherein the writing second metadata of the follower partition to indicate the follower partition is locked by the leader partition further comprises:

accessing a version of the leader partition and aborting the method if the version is not a same version as the stored version of the leader partition.

13. The method of claim 1 wherein the performing the transaction on the leader partition comprises:

setting a field in the leader partition to a first new value, and wherein the performing the transaction on the follower partition further comprises:

setting a field in the follower partition to a second new value.

14. The method of claim 1 wherein the follower partition is a first follower partition and where the method further comprises:

writing third metadata of a second follower partition to indicate the second follower partition is locked by the leader partition; and

performing the transaction on the second follower partition and unlocking the second follower partition.

15. The method of claim 1 further comprising:

accessing metadata of a partition;

determining the metadata of the partition indicates that the partition is locked with a state of committed;

performing a second transaction indicated in the metadata of the partition; and

unlocking the partition.

16. A first computing device comprising:

a processor; and

a memory storing instructions that, when executed by the processor, configure the first computing device to perform operations comprising:

pre-validating a transaction;

writing first metadata to a leader partition, the first metadata comprising a state indicating preparing and mutations of the transaction;

writing second metadata of a follower partition to indicate the follower partition is locked by the leader partition;

updating the state of the first metadata to indicate committed and performing the transaction on the leader partition;

performing the transaction on the follower partition and unlocking the follower partition; and

updating the first metadata to remove the mutations of the transaction and updating the state of the first metadata to indicate transaction completed, wherein the leader partition and the follower partition are different portions of a datastore or database.

17. The first computing device of claim 16 wherein the operations further comprise:

before writing the first metadata to the leader partition, selecting a leader partition key; and

after the performing the transaction on the follower partition, updating the state of the first metadata to indicate committed unapplied, and wherein the transaction is a two-phase transaction.

18. A non-transitory computer-readable storage medium, the computer-readable storage medium including instructions that, when executed by a first computing device, cause the computer to perform operations comprising:

pre-validating a transaction;

writing first metadata to a leader partition, the first metadata comprising a state indicating preparing and mutations of the transaction;

writing second metadata of a follower partition to indicate the follower partition is locked by the leader partition;

updating the state of the first metadata to indicate committed and performing the transaction on the leader partition;

performing the transaction on the follower partition and unlocking the follower partition; and

updating the first metadata to remove the mutations of the transaction and updating the state of the first metadata to indicate transaction completed, wherein the leader partition and the follower partition are different portions of a datastore or database.

19. The non-transitory computer-readable storage medium of claim 18 wherein the operations further comprise:

before writing the first metadata to the leader partition, selecting a leader partition key; and

after the performing the transaction on the follower partition, updating the state of the first metadata to indicate committed unapplied, and wherein the transaction is a two-phase transaction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2022
From: KHAN, OVAIS AHMAD; KILLIAN, DAVID ANDREW; BAIRD, JAMES DANIEL; JOSE, TITTU; THIRUPATHI, ARUNACHALAM
To: SNAP INC.
Reel/Frame 058688/0741 →
Continuity (2)
Provisional Application 63132253 · Dec 30, 2020
Related Publication 20220207026A1 · Jun 30, 2022
Cited By (1)
US 12,306,808