IP Library Granted Patent US 11,010,240
Granted Patent B2
US 11,010,240 · App. 16/742,665 · Granted May 18, 2021

Tracking status and restarting distributed replication

Inventors: Philip Shilane (Newtown, PA); Kevin Xu (Warren, NJ); Abhinav Duggal (Milpitas, CA); Atul Avinash Karmarkar (San Jose, CA)
Assignee: EMC IP Holding Company LLC
G06F11/0793G06F9/485G06F11/0709G06F11/0721G06F11/0757G06F11/0778G06F11/0784G06F11/0787G06F16/27G06F16/273G06F16/275
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,010,240
App. No.
16/742,665
Granted
May 18, 2021
Kind
B2
Abstract

A controller at a source site generates a set of tasks associated with a replication job. Each task includes one or more of copying an object from the source to destination site, or deleting an object from the destination site. The tasks are placed onto a message queue at the source site. Source worker nodes at the source site retrieve the tasks from the source site message queue for processing in conjunction with destination worker nodes at the destination site. A destination worker node, upon receiving a task from a source worker nodes, places the task onto a message queue at the destination site for retrieval by a backend worker node that handles writing to an object store at the destination site.

Claims (62)

1. A method comprising:

generating, by a controller at a source site, a plurality of tasks associated with a replication job between the source site and a destination site, the plurality of tasks comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

placing the plurality of tasks onto a message queue at the source site;

allowing source worker nodes at the source site to retrieve the tasks from the source site message queue for processing in conjunction with destination worker nodes at the destination site,

wherein a destination worker node, upon receiving a task from a source worker node, places the task onto a message queue at the destination site for retrieval by a backend worker node that handles writing to an object store at the destination site;

monitoring the replication job;

based on the monitoring, determining that the replication job has failed;

upon the failure, determining that first portions of the object have been replicated from the source site to the destination site while second portions of the object have not yet been replicated from the source site to the destination site; and

generating new tasks to replicate only the second portions of the object that have not yet been replicated.

2. The method of claim 1 further comprising:

based on the monitoring, adjusting at least one of a number of the source worker nodes at the source site, or a number of the destination worker nodes at the destination site.

3. The method of claim 1 wherein a first pair of source and destination worker nodes processes a first task of the plurality of tasks, and a second pair of source and destination worker nodes, different from the first pair, processes a second task of the plurality of tasks while the first task is being processed.

4. A method comprising:

generating, by a controller at a source site, a plurality of tasks associated with a replication job between the source site and a destination site, the plurality of tasks comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

placing the plurality of tasks onto a message queue at the source site;

allowing source worker nodes at the source site to retrieve the tasks from the source site message queue for processing in conjunction with destination worker nodes at the destination site,

wherein a destination worker node, upon receiving a task from a source worker node, places the task onto a message queue at the destination site for retrieval by a backend worker node that handles writing to an object store at the destination site;

logging status update messages about the replication job into a persistent key-value store;

upon a failure to complete the replication job, accessing the key-value store to identify tasks of the plurality of tasks that were and were not completed before the failure; and

resending the tasks that were not completed to the source worker nodes and not resending the tasks that were completed.

5. A system comprising:

a processor, and memory storing one or more sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of:

generating, by a controller at a source site, a plurality of tasks associated with a replication job between the source site and a destination site, the plurality of tasks comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

placing the plurality of tasks onto a message queue at the source site;

allowing source worker nodes at the source site to retrieve the tasks from the source site message queue for processing in conjunction with destination worker nodes at the destination site,

wherein a destination worker node, upon receiving a task from a source worker node, places the task onto a message queue at the destination site for retrieval by a backend worker node that handles writing to an object store at the destination site;

monitoring the replication job;

based on the monitoring, determining that the replication job has failed;

upon the failure, determining that first portions of the object have been replicated from the source site to the destination site while second portions of the object have not yet been replicated from the source site to the destination site; and

generating new tasks to replicate only the second portions of the object that have not yet been replicated.

6. The system of claim 5 wherein the processor further carries out the steps of:

based on the monitoring, adjusting at least one of a number of the source worker nodes at the source site, or a number of the destination worker nodes at the destination site.

7. The system of claim 5 wherein a first pair of source and destination worker nodes processes a first task of the plurality of tasks, and a second pair of source and destination worker nodes, different from the first pair, processes a second task of the plurality of tasks while the first task is being processed.

8. A system comprising:

a processor, and memory storing one or more sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of:

generating, by a controller at a source site, a plurality of tasks associated with a replication job between the source site and a destination site, the plurality of tasks comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

placing the plurality of tasks onto a message queue at the source site;

allowing source worker nodes at the source site to retrieve the tasks from the source site message queue for processing in conjunction with destination worker nodes at the destination site,

wherein a destination worker node, upon receiving a task from a source worker node, places the task onto a message queue at the destination site for retrieval by a backend worker node that handles writing to an object store at the destination site;

logging status update messages about the replication job into a persistent key-value store;

upon a failure to complete the replication job, accessing the key-value store to identify tasks of the plurality of tasks that were and were not completed before the failure; and

resending the tasks that were not completed to the source worker nodes and not resending the tasks that were completed.

9. A computer program product comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

generating, by a controller at a source site, a plurality of tasks associated with a replication job between the source site and a destination site, the plurality of tasks comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

placing the plurality of tasks onto a message queue at the source site;

allowing source worker nodes at the source site to retrieve the tasks from the source site message queue for processing in conjunction with destination worker nodes at the destination site,

wherein a destination worker node, upon receiving a task from a source worker node, places the task onto a message queue at the destination site for retrieval by a backend worker node that handles writing to an object store at the destination site;

monitoring the replication job;

based on the monitoring, determining that the replication job has failed;

upon the failure, determining that first portions of the object have been replicated from the source site to the destination site while second portions of the object have not yet been replicated from the source site to the destination site; and

generating new tasks to replicate only the second portions of the object that have not yet been replicated.

10. The computer program product of claim 9 wherein the method further comprises:

based on the monitoring, adjusting at least one of a number of the source worker nodes at the source site, or a number of the destination worker nodes at the destination site.

11. The computer program product of claim 9 wherein a first pair of source and destination worker nodes processes a first task of the plurality of tasks, and a second pair of source and destination worker nodes, different from the first pair, processes a second task of the plurality of tasks while the first task is being processed.

12. A computer program product comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

generating, by a controller at a source site, a plurality of tasks associated with a replication job between the source site and a destination site, the plurality of tasks comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

placing the plurality of tasks onto a message queue at the source site;

allowing source worker nodes at the source site to retrieve the tasks from the source site message queue for processing in conjunction with destination worker nodes at the destination site,

wherein a destination worker node, upon receiving a task from a source worker node, places the task onto a message queue at the destination site for retrieval by a backend worker node that handles writing to an object store at the destination site;

logging status update messages about the replication job into a persistent key-value store;

upon a failure to complete the replication job, accessing the key-value store to identify tasks of the plurality of tasks that were and were not completed before the failure; and

resending the tasks that were not completed to the source worker nodes and not resending the tasks that were completed.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052216/0758) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →