IP Library Granted Patent US 8,238,350
Granted Patent B2
US 8,238,350 · App. 11/262,314 · Granted Aug 7, 2012

Message batching with checkpoints systems and methods

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,238,350
App. No.
11/262,314
Granted
Aug 7, 2012
Kind
B2
Abstract

Systems and methods are provided for passing control of message dependencies and ordering to one or more network nodes participating in a transaction. Thus, messages can be sent to the participating nodes and the participating nodes can handle the messages according to their respective dependencies without first sending a response or waiting for the next message to arrive. In one embodiment, at least one message is flagged with a checkpoint to indicate that messages sent before the checkpoint are to be handled by the participating nodes before messages after the checkpoint. Messages may also be flagged with error-handling information. For example, a message may be marked to indicate that if the message fails, no further messages are to be sent to the node had the failure. Responses to a group of messages can be collected in a single operation.

Claims (46)

1. A distributed system comprising:

a first storage unit comprising at least one processor;

a second storage unit in communication with the first storage unit, the second storage unit comprising at least one processor;

wherein the at least one processor of the first storage unit is configured to:

group messages together into a batch that may be operated on as a whole, each message comprising a command;

send the messages to the second storage unit and allow the second storage unit to control the order in which commands in the messages are executed;

send a checkpoint message to the second storage unit, the checkpoint message comprising a checkpoint; and

send a collect message to the second storage unit requesting a result of executing any commands in the messages; and

wherein the at least one processor of the second storage unit is configured to:

receive the messages from the first storage unit;

receive a checkpoint message;

detect the checkpoint;

when the checkpoint is detected, asynchronously execute to completion the unexecuted commands in the messages of the batch received prior to receipt of the checkpoint message before beginning execution of commands in the messages of the batch received after receipt of the checkpoint message, wherein the unexecuted messages of the batch received prior to receipt of the checkpoint message do not include a checkpoint and the commands in the messages of the batch can be executed without first sending a response and waiting for a next message to arrive; and

return a response message to a collect message received from the first storage unit, the response message comprising the results of two or more commands in the messages, the two or more commands having completed execution after receipt of any previous collect message.

2. The distributed system of claim 1 , wherein the at least one processor of the first storage unit is further configured to set an error flag in one or more messages, and wherein if one of the one or more messages with a set error flag fails, the first storage unit cancels transmission of subsequent messages to the second storage unit.

3. The distributed system of claim 1 , wherein the at least one processor of the second storage unit is further configured to:

detect a set error flag in one or more of the messages; and

discard messages with unexecuted commands if the command in the one or more messages with a set error flag fails.

4. The distributed system of claim 1 , wherein the checkpoint message is one of the messages of the batch having a checkpoint.

5. A method for coordinating transactions performed by participating nodes in a network, the method comprising:

grouping messages together into a batch, the grouping performed by a first processor of a first node, each message comprising a command;

sending each of a first set of messages of the batch from the first node to a second node and allowing the second node to control the order in which commands in the first set of messages are executed, the second node comprising a second processor;

sending a checkpoint message from the first node to the second node, the checkpoint message comprising a checkpoint;

after sending the checkpoint message, sending each of a second set of messages of the batch from the first node to the second node;

sending a collect message from the first node to the second node after sending each of the first set of messages and the checkpoint message, the first set of messages comprising two or more messages of the batch, the collect message requesting at least an indication that the commands in the first set of messages were executed;

receiving each of the first set of messages from the first node at the second node;

receiving the checkpoint message from the first node at the second node;

detecting the checkpoint, the detection performed by the second processor;

receiving each of the second set of messages from the first node at the second node;

when the checkpoint is detected, asynchronously executing to completion the unexecuted commands in the first set of messages before beginning execution of commands in the second set of messages, wherein the first set of messages does not include a checkpoint; and

sending a response to the collect message from the second node to the first node, the response comprising at least an indication that the commands in each of the two or more messages in the first set of messages were executed, the two or more messages having completed execution after receipt of any previous collect message.

6. The method of claim 5 , further comprising setting an error flag in one or more of the messages, the setting performed by the first processor of the first node.

7. The method of claim 6 , further comprising canceling transmission of subsequent messages from the first node to the second node if one of the one or more messages with a set error flag fails.

8. The method of claim 6 , further comprising discarding messages with unexecuted commands received by the second node if one of the one or more messages with a set error flag fails.

9. The method of claim 5 , wherein the checkpoint message is one of the messages of the batch having a checkpoint.

10. A message participant system comprising:

a plurality of nodes, each node configured to:

receive a plurality of first messages, wherein each of the first messages may comprise a command and the node controls the order in which commands in the plurality of first messages are executed;

receive a last message, wherein the last message comprises one or more commands and a checkpoint, the checkpoint indicating that any commands in the plurality of first messages should execute before any command in the last message;

execute the unexecuted commands in the plurality of first messages substantially in parallel;

after the commands in the plurality of first messages have completed execution, execute any commands in the last message;

receive a collect message after receiving each of the first messages and the last message, the collect message requesting at least an indication that the commands in the first set of messages and the commands in the last message were executed; and

respond to the collect message, the response comprising at least an indication that the commands in the first set of messages and the commands in the last message were executed, the first set of messages and the last message having completed execution after receipt of any previous collect message;

wherein the plurality of first messages does not include a checkpoint.

11. The message participant system of claim 10 , wherein at least one of the plurality of first messages and the last message includes an error flag.

12. The message participant system of claim 11 , wherein the error flag indicates that if a command in the corresponding message fails, messages that have not yet been processed should be discarded.

Assignments (13)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 21, 2019
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 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2011
From: IVY HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 026083/0036 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2011
From: ISILON SYSTEMS LLC
To: IVY HOLDING, INC.
Reel/Frame 026069/0925 →
MERGER Recorded Mar 31, 2011
From: ISILON SYSTEMS, INC.
To: ISILON SYSTEMS LLC
Reel/Frame 026066/0785 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2006
From: GODMAN, PETER J.; PASSEY, AARON J.; FACHAN, NEAL T.
To: ISILON SYSTEMS, INC.
Reel/Frame 018114/0765 →