IP Library Granted Patent US 12,541,502
Granted Patent B2
US 12,541,502 · App. 15/062,791 · Granted Feb 3, 2026

Methods and apparatuses for improving the utilization of state machines in a distributed system

Inventors: Evan Schnell (North Oaks, MN); Albert Hives (Oakland, CA); Divya Kosaraju (Dublin, CA); Chris Patterson (Oakland, CA)
G06F16/2379G06F16/1774G06F16/2343G06F16/27G06F16/273G06F2201/855
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 12,541,502
App. No.
15/062,791
Granted
Feb 3, 2026
Kind
B2
Abstract

Embodiments are disclosed for improving throughput in a distributed transaction processing system. In the context of a method, an example embodiment includes receiving information regarding a change in state of a particular transaction recorded by the distributed transaction processing system. This example embodiment of the method further includes updating, by state machine query circuitry of a networked device within the distributed transaction processing system and based on the received information, a state of a primary state machine associated with the particular transaction. Finally, the example embodiment of the method further includes updating, by state machine query circuitry of a networked device within the distributed transaction processing system and based on the received information, a state of a primary state machine associated with the particular transaction. Corresponding apparatuses and computer program products are also provided.

Claims (96)

1 . A computer-implemented method for providing throughput in a distributed transaction processing system, the computer-implemented method comprising:

receiving, using one or more processors of the distributed transaction processing system, information regarding a change in state of a particular transaction recorded by the distributed transaction processing system;

updating, using the one or more processors and based on the received information, a state of a primary state machine associated with the particular transaction by:

transitioning, using the one or more processors, the state of the primary state machine based on the received information regarding the change in state of the particular transaction;

incrementing, using the one or more processors, a version number of the primary state machine; and

causing, using the one or more processors, transmission of a secondary state machine transition message to a secondary state machine, wherein the secondary state machine transition message includes an indication of the incremented version number of the primary state machine;

prior to updating a state of the secondary state machine in response to the secondary state machine transition message, determining, by the one or more processors, that the incremented version number of the primary state machine is older than a current version of the secondary state machine, wherein the incremented version number of the primary state machine corresponds to an instance of locking the primary state machine using a first lock protocol, and wherein the current version of the secondary state machine corresponds to an instance of locking the secondary state machine using a second lock protocol, the second lock protocol being less restrictive than the first lock protocol; and

in response to the determining that the incremented version number of the primary state machine is older than the current version of the secondary state machine, preventing, by the one or more processors, the state of the secondary state machine from being updated.

2 . The computer-implemented method of claim 1 , further comprising:

receiving, using the one or more processors, a request for information regarding a state of the particular transaction at an instance in time the request is received;

retrieving, using the one or more processors and by state machine query circuitry of a networked device within the distributed transaction processing system, state information from the secondary state machine; and

returning, using the one or more processors and by communications circuitry of the networked device within the distributed transaction processing system, the retrieved state information.

3 . The computer-implemented method of claim 1 , wherein the secondary state machine transition message comprises an Advanced Messaging Queueing Protocol (AMQP) compliant message.

4 . The computer-implemented method of claim 1 ,

wherein updating the state of the primary state machine comprises:

locking, using the one or more processors, the primary state machine using a serializable isolation level lock before transitioning the state of the primary state machine; and

releasing, using the one or more processors, the serializable isolation level lock on the primary state machine after causing transmission of the secondary state machine transition message;

in response to updating the state of the primary state machine indicated by receipt of the secondary state machine transition message from a message queue, processing, using the one or more processors, the secondary state machine transition message by:

locking, using the one or more processors, the secondary state machine, the secondary state machine having a schema identical to that of the primary state machine, wherein the secondary state machine is also associated with the particular transaction and the secondary state machine is configured for locking using a less restrictive lock protocol than the serializable isolation level lock used to lock the primary state machine;

retrieving, using the one or more processors, from the secondary state machine transition message, the version number of the primary state machine;

retrieving, using the one or more processors, from the secondary state machine, the version number of the secondary state machine;

comparing, using the one or more processors, the version number of the primary state machine to the version number of the secondary state machine to generate a comparison result;

performing a secondary state machine update operation based on the comparison result; and

releasing, using the one or more processors, a lock on the secondary state machine;

wherein the less restrictive lock protocol comprises a read-committed isolation level lock;

wherein locking the secondary state machine comprises locking, using the one or more processors, the secondary state machine using the read-committed isolation level lock; and

wherein releasing the lock on the secondary state machine comprises releasing, using the one or more processors, the read-committed isolation level lock on the secondary state machine.

5 . The computer-implemented method of claim 4 , wherein a version of the primary state machine is older than the current version of the secondary state machine in an instance in which the version number of the primary state machine is less than or equal to the version number of the secondary state machine.

6 . The computer-implemented method of claim 4 , wherein, in an instance in which the version number of the primary state machine is greater than the version number of the secondary state machine but not in sequential order, performing a secondary state machine update operation comprising:

re-queueing, using the one or more processors, the secondary state machine transition message.

7 . The computer-implemented method of claim 4 , wherein, in an instance in which the version number of the primary state machine is greater than the version number of the secondary state machine and in sequential order, performing a secondary state machine update operation comprising:

transitioning, using the one or more processors, the state of the secondary state machine based on the secondary state machine transition message.

8 . The computer-implemented method of claim 1 , wherein the primary state machine and the secondary state machine are modelled by a relational database management system (RDBMS).

9 . The computer-implemented method of claim 1 , further comprising:

discarding the secondary state machine transition message in response to the determining that the incremented version number of the primary state machine is older than the current version of the secondary state machine.

10 . The computer-implemented method of claim 1 , further comprising:

updating, by the one or more processors, the state of the secondary state machine when the incremented version number of the primary state machine is determined to be newer than the current version of the secondary state machine.

11 . A system for providing throughput in a distributed transaction processing system, the system comprising:

one or more processors; and

one or more memories storing processor-executable instructions, that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

receiving information regarding a change in state of a particular transaction recorded by the distributed transaction processing system;

updating, based on the received information, a state of a primary state machine associated with the particular transaction by:

transitioning the state of the primary state machine based on the received information regarding the change in state of the particular transaction;

incrementing a version number of the primary state machine; and

causing transmission of a secondary state machine transition message to a secondary state machine, wherein the secondary state machine transition message includes an indication of the incremented version number of the primary state machine;

prior to updating a state of the secondary state machine in response to the secondary state machine transition message, determining that the incremented version number of the primary state machine is older than a current version of the secondary state machine, wherein the version number of the primary state machine corresponds to an instance of locking the primary state machine using a first lock protocol, and wherein the current version of the secondary state machine corresponds to an instance of locking the secondary state machine using a second lock protocol, the second lock protocol being less restrictive than the first lock protocol; and

in response to the determining that the incremented version number of the primary state machine is older than the current version of the secondary state machine, preventing the state of the secondary state machine from being updated.

12 . The system of claim 11 , wherein the operations further comprise:

receiving a request for information regarding a state of the particular transaction at an instance in time the request is received;

retrieving state information from the secondary state machine; and

returning the retrieved state information.

13 . The system of claim 11 ,

wherein updating the state of the primary state machine comprises:

locking the primary state machine using a serializable isolation level lock before transitioning the state of the primary state machine; and

releasing the serializable isolation level lock on the primary state machine after causing transmission of the secondary state machine transition message;

in response to updating the state of the primary state machine indicated by receipt of the secondary state machine transition message from a message queue, processing the secondary state machine transition message by:

locking the secondary state machine, the secondary state machine having a schema identical to that of the primary state machine, wherein the secondary state machine is also associated with the particular transaction and the secondary state machine is configured for locking using a less restrictive lock protocol than the serializable isolation level lock used to lock the primary state machine;

retrieving from the secondary state machine transition message, the version number of the primary state machine;

retrieving from the secondary state machine, the version number of the secondary state machine;

comparing the version number of the primary state machine to the version number of the secondary state machine to generate a comparison result;

performing a secondary state machine update operation based on the comparison result; and

releasing a lock on the secondary state machine;

wherein the less restrictive lock protocol comprises a read-committed isolation level lock;

wherein locking the secondary state machine comprises locking the secondary state machine using the read-committed isolation level lock; and

wherein releasing the lock on the secondary state machine comprises releasing the read-committed isolation level lock on the secondary state machine.

14 . The system of claim 13 , wherein a version of the primary state machine is older than the current version of the secondary state machine in an instance in which the version number of the primary state machine is less than or equal to the version number of the secondary state machine.

15 . The system of claim 13 , wherein, in an instance in which the version number of the primary state machine is greater than the version number of the secondary state machine but not in sequential order, performing a secondary state machine update operation comprising:

re-queueing the secondary state machine transition message.

16 . The system of claim 13 , wherein, in an instance in which the version number of the primary state machine is greater than the version number of the secondary state machine and in sequential order, performing a secondary state machine update operation comprising:

transitioning the state of the secondary state machine based on the secondary state machine transition message.

17 . One or more non-transitory computer-readable media for providing throughput in a distributed transaction processing system, the one or more non-transitory computer-readable media storing processor-executable instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving information regarding a change in state of a particular transaction recorded by the distributed transaction processing system;

updating, based on the received information, a state of a primary state machine associated with the particular transaction by:

transitioning the state of the primary state machine based on the received information regarding the change in state of the particular transaction;

incrementing a version number of the primary state machine; and

causing transmission of a secondary state machine transition message to a secondary state machine, wherein the secondary state machine transition message includes an indication of the incremented version number of the primary state machine;

prior to updating a state of the secondary state machine in response to the secondary state machine transition message, determining that the incremented version number of the primary state machine is older than a current version of the secondary state machine, wherein the version number of the primary state machine corresponds to an instance of locking the primary state machine using a first lock protocol, and wherein the current version of the secondary state machine corresponds to an instance of locking the secondary state machine using a second lock protocol, the second lock protocol being less restrictive than the first lock protocol; and

in response to the determining that the incremented version number of the primary state machine is older than the current version of the secondary state machine, preventing the state of the secondary state machine from being updated.

18 . The one or more non-transitory computer-readable media of claim 17 , wherein the operations further comprise:

receiving a request for information regarding a state of the particular transaction at an instance in time the request is received;

retrieving state information from the secondary state machine; and

returning the retrieved state information.

19 . The one or more non-transitory computer-readable media of claim 17 ,

wherein updating the state of the primary state machine comprises:

locking the primary state machine using a serializable isolation level lock before transitioning the state of the primary state machine; and

releasing the serializable isolation level lock on the primary state machine after causing transmission of the secondary state machine transition message;

in response to updating the state of the primary state machine indicated by receipt of the secondary state machine transition message from a message queue, processing the secondary state machine transition message by:

locking the secondary state machine, the secondary state machine having a schema identical to that of the primary state machine, wherein the secondary state machine is also associated with the particular transaction and the secondary state machine is configured for locking using a less restrictive lock protocol than the serializable isolation level lock used to lock the primary state machine;

retrieving from the secondary state machine transition message, the version number of the primary state machine;

retrieving from the secondary state machine, the version number of the secondary state machine;

comparing the version number of the primary state machine to the version number of the secondary state machine to generate a comparison result;

performing a secondary state machine update operation based on the comparison result; and

releasing a lock on the secondary state machine;

wherein the less restrictive lock protocol comprises a read-committed isolation level lock;

wherein locking the secondary state machine comprises locking the secondary state machine using the read-committed isolation level lock; and

wherein releasing the lock on the secondary state machine comprises releasing the read-committed isolation level lock on the secondary state machine.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Oct 5, 2022
From: BANK OF AMERICA, N.A.
To: CHANGE HEALTHCARE RESOURCES, LLC (FORMERLY KNOWN AS ALTEGRA HEALTH OPERATING COMPANY LLC); CHANGE HEALTHCARE SOLUTIONS, LLC; CHANGE HEALTHCARE PERFORMANCE, INC. (FORMERLY KNOWN AS CHANGE HEALTHCARE, INC.); CHANGE HEALTHCARE OPERATIONS, LLC; CHANGE HEALTHCARE HOLDINGS, INC.; CHANGE HEALTHCARE TECHNOLOGIES, LLC (FORMERLY KNOWN AS MCKESSON TECHNOLOGIES LLC); CHANGE HEALTHCARE HOLDINGS, LLC
Reel/Frame 061620/0054 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2018
From: CHANGE HEALTHCARE LLC
To: CHANGE HEALTHCARE HOLDINGS, LLC
Reel/Frame 046449/0899 →
CHANGE OF ADDRESS Recorded Mar 23, 2017
From: CHANGE HEALTHCARE LLC
To: CHANGE HEALTHCARE LLC
Reel/Frame 042082/0061 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2017
From: PF2 IP LLC
To: CHANGE HEALTHCARE LLC
Reel/Frame 041966/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2017
From: MCKESSON CORPORATION
To: PF2 IP LLC
Reel/Frame 041938/0501 →
SECURITY AGREEMENT Recorded Mar 2, 2017
From: CHANGE HEALTHCARE HOLDINGS, LLC; CHANGE HEALTHCARE, INC.; CHANGE HEALTHCARE HOLDINGS, INC.; CHANGE HEALTHCARE OPERATIONS, LLC; CHANGE HEALTHCARE SOLUTIONS, LLC; ALTEGRA HEALTH OPERATING COMPANY LLC; MCKESSON TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 041858/0482 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2017
From: MCKESSON FINANCIAL HOLDINGS UNLIMITED COMPANY
To: MCKESSON CORPORATION
Reel/Frame 041355/0408 →
CHANGE OF NAME Recorded Jan 11, 2017
From: MCKESSON FINANCIAL HOLDINGS
To: MCKESSON FINANCIAL HOLDINGS UNLIMITED COMPANY
Reel/Frame 041329/0879 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2016
From: MCKESSON CORPORATION
To: MCKESSON FINANCIAL HOLDINGS
Reel/Frame 039887/0935 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2016
From: SCHNELL, EVAN; KOSARAJU, DIVYA; HIVES, ALBERT; PATTERSON, CHRIS
To: MCKESSON CORPORATION
Reel/Frame 037911/0610 →