IP Library Granted Patent US 8,103,643
Granted Patent B2
US 8,103,643 · App. 12/643,340 · Granted Jan 24, 2012

System and method for performing distributed transactions using global epochs

Assignee: Oracle America, Inc.
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 8,103,643
App. No.
12/643,340
Granted
Jan 24, 2012
Kind
B2
Abstract

A method for performing distributed transactions of a cluster. The method includes, in response to a lock request including a first epoch from a first node, setting a local epoch to a maximum of the first epoch and the local epoch, sending a first lock including the local epoch to the first node, and in response to a conflicting lock request including a second epoch from a second node, setting the local epoch to a maximum of the second epoch and the local epoch, where the conflicting lock request is delayed until after the first lock is released. The method further includes, in response to a reintegration request including a third epoch from the first node, setting the local epoch to a maximum of the third epoch and the local epoch and performing a reintegration based on the reintegration request, where the reintegration is logged using the local epoch.

Claims (59)

1. A non-transitory computer readable medium, embodying instructions executable by the computer to perform method steps for performing a distributed transaction of a plurality of nodes, the instructions comprising functionality to:

in response to receiving a lock request comprising a first message epoch from a first cluster node of the plurality of nodes, set a first local epoch to a maximum of the first message epoch and the local epoch to obtain a second local epoch;

send a first lock comprising the second local epoch to the first cluster node;

in response to receiving a conflicting lock request comprising a second message epoch from a second cluster node of the plurality of nodes, set the second local epoch to a maximum of the second message epoch and the second local epoch to obtain a third local epoch, wherein the conflicting lock request is delayed until after the first lock is released;

in response to receiving a reintegration request comprising a third message epoch from the first cluster node, set the third local epoch to a maximum of the third message epoch and the third local epoch to obtain a fourth local epoch;

perform a reintegration based on the reintegration request, wherein the reintegration is logged using the fourth local epoch;

receive a lock release request comprising a fourth message epoch from the first cluster node; and

after setting the fourth local epoch to a maximum of the fourth message epoch and the fourth local epoch to obtain a fifth local epoch, release the first lock and send a second lock comprising the fifth local epoch to the second cluster node.

2. The non-transitory computer readable medium of claim 1 , the instructions further comprising functionality to:

receive a preparation message for an eviction of the first cluster node from the second cluster node;

determine a plurality of locks comprising the first lock that is granted to the first cluster node;

determine a plurality of records protected by the plurality of locks;

send the plurality of records to the second cluster node;

receive a recovery message comprising a minimum oldest locally volatile epoch (lvepoch) of the plurality of records from the second node; and

undo updates with epochs greater than or equal to the lvepoch.

3. The non-transitory computer readable medium of claim 1 , the instructions further comprising functionality to:

in response to committing the reintegration to persistent storage, update an oldest locally volatile epoch (lvepoch) with the fourth local epoch;

send the lvepoch to a stability coordinator;

receive a minimum lvepoch of the plurality of nodes from the stability coordinator; and

delete undo log entries associated with epochs less than the minimum lvepoch.

4. The non-transitory computer readable medium of claim 3 , wherein the first cluster node deletes redo log entries associated with the undo log entries.

5. The non-transitory computer readable medium of claim 1 , the instructions further comprising functionality to:

after recovering from a failure, send an oldest locally volatile epoch (lvepoch) to a recovery coordinator;

receive a minimum lvepoch of the plurality of nodes from the recovery coordinator; and

in response to determining that the second maximum epoch of the reintegration is greater than or equal to the minimum lvepoch, undo the reintegration.

6. The non-transitory computer readable medium of claim 1 , the instructions further comprising functionality to:

advance the fourth local epoch to obtain a fifth local epoch; and

broadcast the fifth local epoch to each of the plurality of nodes.

7. The non-transitory computer readable medium of claim 1 , wherein the first local epoch is set to the second local epoch in a first assignment, and wherein the first lock comprises a lock epoch, and wherein the lock epoch is set to the second local epoch in a second assignment, and wherein the first assignment and the second assignment are mutually atomic.

8. A system for performing a distributed transaction of a plurality of nodes, comprising:

a processor; and

a memory comprising software instructions for enabling the processor to:

in response to receiving a lock request comprising a first message epoch from a first cluster node of the plurality of nodes, set a first local epoch to a maximum of the first message epoch and the local epoch to obtain a second local epoch;

send a first lock comprising the second local epoch to the first cluster node;

in response to receiving a conflicting lock request comprising a second message epoch from a second cluster node of the plurality of nodes, set the second local epoch to a maximum of the second message epoch and the second local epoch to obtain a third local epoch, wherein the conflicting lock request is delayed until after the first lock is released;

in response to receiving a reintegration request comprising a third message epoch from the first cluster node, set the third local epoch to a maximum of the third message epoch and the third local epoch to obtain a fourth local epoch;

perform a reintegration based on the reintegration request, wherein the reintegration is logged using the fourth local epoch;

receive a lock release request comprising a fourth message epoch from the first cluster node; and

after setting the fourth local epoch to a maximum of the fourth message epoch and the fourth local epoch to obtain a fifth local epoch, release the first lock and send a second lock comprising the fifth local epoch to the second cluster node.

9. The system of claim 8 , the software instructions further for enabling the processor to:

receive a preparation message for an eviction of the first cluster node from the second cluster node;

determine a plurality of locks comprising the first lock that is granted to the first cluster node;

determine a plurality of records protected by the plurality of locks;

send the plurality of records to the second cluster node;

receive a recovery message comprising a minimum oldest locally volatile epoch (lvepoch) of the plurality of records from the second node; and

undo updates with epochs greater than or equal to the lvepoch.

10. The system of claim 8 , the software instructions further for enabling the processor to in response to committing the reintegration to persistent storage, update an oldest locally volatile epoch (lvepoch) with the fourth local epoch;

send the lvepoch to a stability coordinator;

receive a minimum lvepoch of the plurality of nodes from the stability coordinator; and

delete undo log entries associated with epochs less than the minimum lvepoch.

11. The system of claim 10 , wherein the first cluster node deletes redo log entries associated with the undo log entries.

12. The system of claim 8 , the software instructions further for enabling the processor to

after recovering from a failure, send an oldest locally volatile epoch (lvepoch) to a recovery coordinator;

receive a minimum lvepoch of the plurality of nodes from the recovery coordinator; and

in response to determining that the second maximum epoch of the reintegration is greater than or equal to the minimum lvepoch, undo the reintegration.

13. The system of claim 8 , the software instructions further for enabling the processor to

advance the fourth local epoch to obtain a fifth local epoch; and

broadcast the fifth local epoch to each of the plurality of nodes.

14. The system of claim 8 , wherein the first local epoch is set to the second local epoch in a first assignment, and wherein the first lock comprises a lock epoch, and wherein the lock epoch is set to the second local epoch in a second assignment, and wherein the first assignment and the second assignment are mutually atomic.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2017
From: SEAGATE SYSTEMS (UK) LIMITED (F/K/A XYRATEX TECHNOLOGY LIMITED)
To: CRAY INC.
Reel/Frame 043948/0354 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2013
From: ORACLE INTERNATIONAL CORPORATION
To: XYRATEX TECHNOLOGY LIMITED
Reel/Frame 029807/0154 →
LICENSE Recorded Feb 13, 2013
From: XYRATEX TECHNOLOGY LIMITED
To: ORACLE CORPORATION
Reel/Frame 029807/0193 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2010
From: DANILOV, NIKITA YURIEVICH; BARTON, ERIC
To: SUN MICROSYSTEMS, INC.
Reel/Frame 023931/0228 →
Continuity (1)
Related Publication 20110153797A1 · Jun 23, 2011