IP Library Granted Patent US 9,965,359
Granted Patent B2
US 9,965,359 · App. 14/657,854 · Granted May 8, 2018

Log forwarding to avoid deadlocks during parallel log replay in asynchronous table replication

Inventors: Juchang Lee (Seoul, KR); Chang-Gyoo Park (Seoul, KR); Hyoung-Jun Na (Seoul, KR); Deok-Hoe Kim (Seoul, KR)
Assignee: SAP SE
G06F11/1469G06F11/1464G06F17/30368G06F17/30371G06F17/30377G06F17/30575G06F17/30578G06F17/30876G06F2201/80
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,965,359
App. No.
14/657,854
Granted
May 8, 2018
Kind
B2
Abstract

Disclosed herein are system, method, and computer program product embodiments for removing a deadlock during replication from distributed source tables to a replica node. An embodiment operates by detecting a deadlock at a parallel log replayer at a replica node. A first replication log entry from a queue at the parallel log replayer is then selected based on whether removing the first replication log entry from the queue removes the deadlock. The first replication log entry is then forwarded to a waiting queue. A second replication log entry is then replayed at the parallel log replayer. After replaying the second replication log entry, the first replication log entry is replayed at the parallel log replayer.

Claims (52)

1. A computer implemented method for removing a deadlock during replication from distributed source tables to a replica node, comprising:

detecting, by at least one processor, a deadlock at a parallel log replayer at a replica node;

selecting, by the at least one processor, a first replication log entry from a queue of a plurality of queues of the parallel log replayer based on whether removing the first replication log entry from the queue removes the deadlock, wherein the first replication log entry comprises an operation type, a table identifier, and a transaction identifier for a changed row;

inserting, by the at least one processor, the first replication log entry into a waiting queue;

removing, by the at least one processor, the first replication log entry from the queue of the plurality of queues of the parallel log replayer;

replaying, by the at least one processor, a second replication log entry from the queue of the plurality of queues at the parallel log replayer after removing the first replication log entry from the queue of the plurality of queues of the parallel log replayer; and

replaying, by the at least one processor, the first replication log entry from the waiting queue at the parallel log replayer after replaying the second replication log entry;

wherein at least one of the detecting, selecting, inserting, removing, replaying the second replication log entry, and replaying the first replication log entry are performed by one or more computers.

2. The method of claim 1 , wherein the detecting is performed based on whether the parallel log replayer is blocked.

3. The method of claim 1 , the selecting the first replication log entry further comprising:

selecting the first replication log entry from the head of the queue of the plurality of queues of the parallel log replayer.

4. The method of claim 1 , the detecting the deadlock further comprising:

determining whether a cyclic dependency relationship exists among replication log entries at the parallel log replayer and transaction commit log entries at a transaction commit log replayer.

5. The method of claim 1 , the detecting the deadlock further comprising:

determining whether a cyclic dependency relationship exists among the replication log entries at the parallel log replayer and the transaction commit log entries at a transaction commit log replayer based on transaction IDs associated with the replication log entries and the transaction commit log entries.

6. The method of claim 1 , wherein the selecting, inserting, and removing steps are repeated based on whether the deadlock is removed.

7. The method of claim 1 , wherein the first replication log entry further comprises a new row image for the changed row.

8. The method of claim 1 , wherein the first replication log entry further comprises a row-ID column value associated with the changed row.

9. The method of claim 1 , wherein the first replication log entry is based on an insert operation, update operation, or delete operation.

10. A system, comprising:

a memory; and

at least one processor coupled to the memory and configured to:

detect a deadlock at a parallel log replayer at a replica node;

select first replication log entry from a queue of a plurality of queues of the parallel log replayer based on whether removing the first replication log entry from the queue removes the deadlock, wherein the first replication log entry comprises an operation type, a table identifier, and a transaction identifier for a changed row;

insert, the first replication log entry into a waiting queue;

remove the first replication log entry from the queue of the plurality of queues of the parallel log replayer;

replay a second replication log entry from the queue of the plurality of queues at the parallel log replayer after removing the first replication log entry from the queue of the plurality of queues of the parallel log replayer; and

replay the first replication log entry from the waiting queue at the parallel log replayer after replaying the second replication log entry.

11. The system of claim 10 , wherein the detecting is performed based on whether the parallel log replayer is blocked.

12. The system of claim 10 , the at least one processor further configured to:

select the first replication log entry from the head of the queue of the plurality of queues of the parallel log replayer.

13. The system of claim 10 , the at least one processor further configured to:

determine whether a cyclic dependency relationship exists among replication log entries at the parallel log replayer and transaction commit log entries at a transaction commit log replayer.

14. The system of claim 10 , the at least one processor further configured to:

determine whether a cyclic dependency relationship exists among the replication log entries at the parallel log replayer and the transaction commit log entries at a transaction commit log replayer based on transaction IDs associated with the replication log entries and the transaction commit log entries.

15. The system of claim 10 , the at least one processor further configured to:

repeat the selecting, inserting, and removing based on whether the deadlock is removed.

16. A non-transitory computer-readable device having instructions stored thereon that, when executed by at least one computing device, causes the at least one computing device to perform operations comprising:

detecting a deadlock at a parallel log replayer at a replica node;

selecting a first replication log entry from a queue of a plurality of queues of the parallel log replayer based on whether removing the first replication log entry from the queue removes the deadlock, wherein the first replication log entry comprises an operation type, a table identifier, and a transaction identifier for a changed row;

inserting the first replication log entry into a waiting queue;

removing the first replication log entry from the queue of the plurality of queues of the parallel log replayer;

replaying a second replication log entry from the queue of the plurality of queues at the parallel log replayer after removing the first replication log entry from the queue of the plurality of queues of the parallel log replayer; and

replaying the first replication log entry from the waiting queue at the parallel log replayer after replaying the second replication log entry.

17. The non-transitory computer-readable device of claim 16 , wherein the detecting is performed based on whether the parallel log replayer is blocked.

18. The non-transitory computer-readable device of claim 16 , the selecting comprising:

selecting the first replication log entry from the head of the queue of the plurality of queues of the parallel log replayer.

19. The non-transitory computer-readable device of claim 16 , the detecting comprising:

determining whether a cyclic dependency relationship exists among replication log entries at the parallel log replayer and transaction commit log entries at a transaction commit log replayer.

20. The non-transitory computer-readable device of claim 16 , the detecting comprising:

determining whether a cyclic dependency relationship exists among the replication log entries at the parallel log replayer and the transaction commit log entries at a transaction commit log replayer based on transaction IDs associated with the replication log entries and the transaction commit log entries.

21. The non-transitory computer-readable device of claim 16 , wherein the selecting, inserting, and removing operations are repeated based on whether the deadlock is removed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2015
From: LEE, JUCHANG; PARK, CHANG-GYOO; NA, HYOUNG-JUN; KIM, DEOK-HOE
To: SAP SE
Reel/Frame 035192/0227 →
Continuity (2)
Provisional Application 62084065 · Nov 25, 2014
Related Publication 20160147858A1 · May 26, 2016