IP Library Granted Patent US 11,693,696
Granted Patent B2
US 11,693,696 · App. 17/018,369 · Granted Jul 4, 2023

Techniques for command execution using a state machine

Inventors: Daniel K. O'Reilly, Jr. (Framingham, MA); Matthew P. Jean (Shirley, MA); Michael J. Burns (Shrewsbury, MA)
Assignee: EMC IP Holding Company LLC
G06F9/4881G06F9/541G06F11/076G06F11/0727G06F11/0751G06F11/0793G06F11/1415G06F11/1474G06F11/28G06F16/2379G06F2201/805
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,693,696
App. No.
17/018,369
Granted
Jul 4, 2023
Kind
B2
Abstract

Techniques for processing a request may include: providing tasks to a state machine framework, wherein the tasks perform processing of a workflow for servicing the request; generating, by the state machine framework, a state machine for processing the request, wherein the state machine includes states associated with the tasks, wherein generating the state machine may include automatically determining a first state transition of the state machine between a first and a second of the states; receiving the request; and responsive to receiving the request, performing first processing using the state machine to service the request. The framework may automatically generate triggers that drive the state machine to determine subsequent states in accordance with defined state transitions. State machine internal state information may be persistently stored and used in restoring the state machine to one of its states in connection processing of the command.

Claims (47)

1. A method of processing a request comprising:

defining, using a processor and a state machine framework, a state machine for the request, wherein a plurality of tasks is performed in a workflow for servicing the request, wherein the plurality of tasks is implemented by a plurality of code entities, and wherein said defining further includes:

issuing, at a first point in time using a processor, one or more application programming interface (API) calls to the state machine framework, wherein the one or more API calls identify a defined sequential order in which the plurality of tasks and the plurality of code entities are executed, at another point in time subsequent to the first point in time, to implement and service the request at runtime;

issuing, using a processor and subsequent to the first point in time, a second API call to the state machine framework, wherein the second API call instructs the state machine framework to generate a state machine for the request in accordance with said defining;

responsive to receiving the second API call, generating, at a second point in time by the state machine framework and using a processor, the state machine for processing the request, wherein the state machine includes a plurality of states associated with the plurality of tasks and the plurality of code entities, wherein said generating includes automatically determining a first state transition of the state machine between a first state of the plurality of states and a second state of the plurality of states, wherein the first state corresponds to a first code entity of the plurality of code entities and the second state corresponds to a second code entity of the plurality of code entities;

receiving, using a processor and at a third point in time subsequent to the second point in time, the request; and

responsive to receiving the request, performing first processing using a processor and the state machine to service the request, wherein said first processing further includes the state machine framework transitioning to the first state of the state machine and invoking the first code entity corresponding to the first state.

2. The method of claim 1 , wherein said generating includes automatically determining a plurality of state transitions of the state machine in accordance with the sequential ordering.

3. The method of claim 2 , wherein said generating includes converting each of the plurality of tasks into a different one of the plurality of states.

4. The method of claim 3 , wherein said defining further includes:

providing a plurality of rollback tasks to the state machine framework, where each of the plurality of rollback tasks reverses processing performed by one of the plurality of tasks, wherein the plurality of rollback tasks are provided to the state machine framework in the one or more API calls, and wherein the state machine framework converts the plurality of rollback tasks to a second plurality of states of the state machine.

5. The method of claim 4 , wherein said generating includes automatically determining a second plurality of state transitions of the state machine to perform rollback processing for the plurality of states.

6. The method of claim 5 , wherein the second plurality of state transitions are automatically determined by the state machine framework in accordance with the plurality of tasks and the plurality of rollback tasks.

7. The method of claim 6 , wherein the plurality of rollback tasks and the plurality of tasks are user-supplied code entities not included in the state machine framework.

8. The method of claim 1 , wherein said first processing includes performing processing of a first of the plurality of tasks corresponding to the first state of the state machine.

9. The method of claim 8 , wherein performing processing of the first task includes issuing a first plurality of instructions that perform a first plurality of updates to a database, and wherein the first plurality of instructions are included in a database transaction that atomically performs the first plurality of updates to the database.

10. The method of claim 9 , wherein the database transaction includes one or more instructions that persistently stores SM (state machine) internal state information for the first task, and wherein the method includes committing the database transaction, and wherein said committing includes atomically updating the database in accordance with the one or more instructions and also the first plurality of instructions.

11. The method of claim 10 , further comprising:

determining that the first task completes successfully; and

responsive to said determining that the first task completes successfully, generating a success trigger that drives the state machine into the second state in accordance with the first state transition.

12. The method of claim 9 , further comprising:

determining that an error occurs when the database transaction is open and not yet committed to the database;

responsive to said error, incrementing a retry count denoting a number of times processing of the first task has resulted in an error;

determining whether a retry count associated with the first task exceeds a maximum; and

responsive to said determining that the retry count exceeds the maximum, generating a failure trigger that drives the state machine into a next state in accordance with a second transition of the state machine, wherein the next state corresponds to a first of the plurality of rollback tasks that reverses processing performed by an associated one of the plurality of tasks.

13. The method of claim 12 , further comprising:

responsive to said determining that the retry count does not exceed the maximum, generating a retry trigger that drives the state machine into the first state in accordance with a second state transition of the state machine, wherein the second state transition is a loopback transition that causes the state machine to remain in the first state and repeat processing of the first task.

14. The method of claim 13 , wherein the database transaction that is opened is aborted responsive to said error, and the retry count is included in SM internal state information for the first task that is persistently stored in the database as a result of committing a second database transaction that stores the SM internal state information for the first task to the database.

15. The method of claim 1 , wherein the request is a data storage system management command issued over a control or data path.

16. The method of claim 1 , wherein the first processing to service the request using the state machine is performed on a system, wherein the system crashes while performing processing of the first task for a first of the plurality of states, and wherein the method includes:

restarting the system and resuming processing to service the request at the first task in accordance with restored SM internal state information.

17. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing a request comprising:

defining, using a processor and a state machine framework, a state machine for the request, wherein a plurality of tasks is performed in a workflow for servicing the request, wherein the plurality of tasks is implemented by a plurality of code entities, and wherein said defining further includes:

issuing, at a first point in time using a processor, one or more application programming interface (API) calls to the state machine framework, wherein the one or more API calls identify a defined sequential order in which the plurality of tasks and the plurality of code entities are executed, at another point in time subsequent to the first point in time, to implement and service the request at runtime;

issuing, using a processor and subsequent to the first point in time, a second API call to the state machine framework, wherein the second API call instructs the state machine framework to generate a state machine for the request in accordance with said defining;

responsive to receiving the second API call, generating, at a second point in time by the state machine framework and using a processor, the state machine for processing the request, wherein the state machine includes a plurality of states associated with the plurality of tasks and the plurality of code entities, wherein said generating includes automatically determining a first state transition of the state machine between a first state of the plurality of states and a second state of the plurality of states, wherein the first state corresponds to a first code entity of the plurality of code entities and the second state corresponds to a second code entity of the plurality of code entities;

receiving, using a processor and at a third point in time subsequent to the second point in time, the request; and

responsive to receiving the request, performing first processing using a processor and the state machine to service the request, wherein said first processing further includes the state machine framework transitioning to the first state of the state machine and invoking the first code entity corresponding to the first state.

18. A system comprising:

a processor; and

a memory comprising code stored thereon that, when executed, performs a method of processing a request comprising:

defining, using a processor and a state machine framework, a state machine for the request, wherein a plurality of tasks is performed in a workflow for servicing the request, wherein the plurality of tasks is implemented by a plurality of code entities, and wherein said defining further includes:

issuing, at a first point in time using a processor, one or more application programming interface (API) calls to the state machine framework, wherein the one or more API calls identify a defined sequential order in which the plurality of tasks and the plurality of code entities are executed, at another point in time subsequent to the first point in time, to implement and service the request at runtime;

issuing, using a processor and subsequent to the first point in time, a second API call to the state machine framework, wherein the second API call instructs the state machine framework to generate a state machine for the request in accordance with said defining;

responsive to receiving the second API call, generating, at a second point in time by the state machine framework and using a processor, the state machine for processing the request, wherein the state machine includes a plurality of states associated with the plurality of tasks and the plurality of code entities, wherein said generating includes automatically determining a first state transition of the state machine between a first state of the plurality of states and a second state of the plurality of states, wherein the first state corresponds to a first code entity of the plurality of code entities and the second state corresponds to a second code entity of the plurality of code entities;

receiving, using a processor and at a third point in time subsequent to the second point in time, the request; and

responsive to receiving the request, performing first processing using a processor and the state machine to service the request, wherein said first processing further includes the state machine framework transitioning to the first state of the state machine and invoking the first code entity corresponding to the first state.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0523) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0664 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0434) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0740 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0609) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0570 →
RELEASE OF SECURITY INTEREST AT REEL 054591 FRAME 0471 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0463 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 054475/0609 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0434 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0523 →
SECURITY AGREEMENT Recorded Nov 13, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 054591/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2020
From: O'REILLY, DANIEL K., JR.; JEAN, MATTHEW P.; BURNS, MICHAEL J.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053747/0839 →
Cited By (1)
US 12,536,486