# US 2017/0255668 A1 · Methods and apparatuses for improving processing efficiency in a distributed system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0255668 A1
- Document ID: US20170255668A1
- Status: Published application
- Kind: A1
- Application number: 15/062,791
- Filed: 2016-03-07
- Published: 2017-09-07
- Earliest claimed: 2016-03-07
- Assignees: Change Healthcare LLC
- Applicants: Change Healthcare LLC
- Inventors: Evan Schnell; Albert Hives; Divya Kosaraju; Chris Patterson
- Web page: https://patentgrep.com/patent/US20170255668A1

## CPC

- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/1774: {Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files}
- G06F 16/2343: {Locking methods, e.g. distributed locking or locking implementation details}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F 2201/855: Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 1

A method for improving throughput in a distributed transaction processing system, the method comprising:
receiving information regarding a change in state of a particular transaction recorded by the distributed transaction processing system;
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; and
in response to updating the state of the primary state machine, updating, by state machine query circuitry of a networked device within the distributed transaction processing system, a state of a 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.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving a request for information regarding a current state of the particular transaction;
retrieving, by state machine query circuitry of a networked device within the distributed transaction processing system, state information from the secondary state machine; and
returning, by communications circuitry of a networked device within the distributed transaction processing system, the retrieved state information.

### Claim 3 (depends on 1)

The method of claim 1, wherein updating the state of the primary state machine includes:
locking the primary state machine using a serializable isolation level lock;
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 associated with the primary state machine;
causing transmission of a secondary state machine transition message, wherein the secondary state machine transition message includes an indication of the incremented version number associated with the primary state machine; and
releasing the serializable isolation level lock on the primary state machine.

### Claim 4 (depends on 3)

The method of claim 3, wherein the primary state machine transition message comprises an Advanced Messaging Query Protocol (AMQP) compliant message.

### Claim 5 (depends on 1)

The method of claim 1, wherein updating the state of the secondary state machine includes:
receiving a secondary state machine transition message;
locking the secondary state machine using a read-committed isolation level lock;
retrieving, from the state machine transition message, a version number associated with the primary state machine;
retrieving, from the secondary state machine, a version number associated with the secondary state machine;
comparing a version number of the primary state machine to a version number associated with the secondary state machine;
performing a secondary state machine update operation based on the comparison of the version number of the primary state machine to the version number associated with the secondary state machine; and
releasing the read-committed isolation level lock on the secondary state machine.

### Claim 6 (depends on 5)

The method of claim 5, wherein, in an instance in which the version number associated with the primary state machine is less than or equal to the version number associated with the secondary state machine, performing the secondary state machine update operation comprises:
discarding the secondary state machine transition message.

### Claim 7 (depends on 5)

The method of claim 5, wherein, in an instance in which the version number associated with the primary state machine is greater than the version number associated with the secondary state machine but not in sequential order, performing the secondary state machine update operation comprises:
re-queueing the secondary state machine transition message.

### Claim 8 (depends on 5)

The method of claim 5, wherein, in an instance in which the version number associated with the primary state machine is greater than the version number associated with the secondary state machine and in sequential order, performing the secondary state machine update operation comprises:
transitioning the state of the secondary state machine based on the received secondary state machine transition message.

### Claim 9 (depends on 1)

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

### Claim 10

An apparatus for improving throughput in a distributed transaction processing system, the apparatus comprising at least one processor and at least one memory storing computer-executable instructions, that, when executed by the at least one processor, cause the apparatus to:
receive information regarding a change in state of a particular transaction recorded by the distributed transaction processing system;
update, based on the received information, a state of a primary state machine associated with the particular transaction; and
in response to updating the state of the primary state machine, update a state of a 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.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein the computer-executable instructions, when executed by the at least one processor, further cause the apparatus to:
receive a request for information regarding a current state of the particular transaction;
retrieve state information from the secondary state machine; and
return the retrieved state information.

### Claim 12 (depends on 10)

The apparatus of claim 10, wherein the computer-executable instructions, when executed by the at least one processor, cause the apparatus to update the state of the primary state machine by causing the apparatus to:
lock the primary state machine using a serializable isolation level lock;
transition the state of the primary state machine based on the received information regarding the change in state of the particular transaction;
increment a version number associated with the primary state machine;
cause transmission of a secondary state machine transition message, wherein the secondary state machine transition message includes an indication of the incremented version number associated with the primary state machine; and
release the serializable isolation level lock on the primary state machine.

### Claim 13 (depends on 10)

The apparatus of claim 10, wherein the computer-executable instructions, when executed by the at least one processor, cause the apparatus to update the state of the secondary state machine by causing the apparatus to:
receive a secondary state machine transition message;
lock the secondary state machine using a read-committed isolation level lock;
retrieve, from the state machine transition message, a version number associated with the primary state machine;
retrieve, from the secondary state machine, a version number associated with the secondary state machine;
compare a version of the primary state machine to a version number associated with the secondary state machine;
perform a secondary state machine update operation based on the comparison of the version number of the primary state machine to the version number associated with the secondary state machine; and
release the read-committed isolation level lock on the secondary state machine.

### Claim 14 (depends on 13)

The apparatus of claim 13, wherein, in an instance in which the version number associated with the primary state machine is less than or equal to the version number associated with the secondary state machine, the computer-executable instructions, when executed by the at least one processor, cause the apparatus to perform the secondary state machine update operation by causing the apparatus to:
discard the secondary state machine transition message.

### Claim 15 (depends on 13)

The apparatus of claim 13, wherein, in an instance in which the version number associated with the primary state machine is greater than the version number associated with the secondary state machine but not in sequential order, the computer-executable instructions, when executed by the at least one processor, cause the apparatus to perform the secondary state machine update operation by causing the apparatus to:
re-queue the secondary state machine transition message.

### Claim 16 (depends on 13)

The apparatus of claim 13, wherein, in an instance in which the version number associated with the primary state machine is greater than the version number associated with the secondary state machine and in sequential order, the computer-executable instructions, when executed by the at least one processor, cause the apparatus to perform the secondary state machine update operation by causing the apparatus to:
transition the state of the secondary state machine based on the received secondary state machine transition message.

### Claim 17

A computer program product comprising at least one non-transitory computer-readable storage medium for improving throughput in a distributed transaction processing system, the at least one non-transitory computer-readable storage medium storing computer-executable instructions that, when executed, cause an apparatus to:
receive information regarding a change in state of a particular transaction recorded by the distributed transaction processing system;
update, based on the received information, a state of a primary state machine associated with the particular transaction; and
in response to updating the state of the primary state machine, update a state of a 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.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein the computer-executable instructions, when executed, further cause the apparatus to:
receive a request for information regarding a current state of the particular transaction;
retrieve state information from the secondary state machine; and
return the retrieved state information.

### Claim 19 (depends on 17)

The computer program product of claim 17, wherein the computer-executable instructions, when executed, cause the apparatus to update the state of the primary state machine by causing the apparatus to:
lock the primary state machine using a serializable isolation level lock;
transition the state of the primary state machine based on the received information regarding the change in state of the particular transaction;
increment a version number associated with the primary state machine;
cause transmission of a secondary state machine transition message, wherein the secondary state machine transition message includes an indication of the incremented version number associated with the primary state machine; and
release the serializable isolation level lock on the primary state machine.

### Claim 20 (depends on 17)

The computer program product of claim 17, wherein the computer-executable instructions, when executed, cause the apparatus to update the state of the secondary state machine by causing the apparatus to:
receive a secondary state machine transition message;
lock the secondary state machine using a read-committed isolation level lock;
retrieve, from the state machine transition message, a version number associated with the primary state machine;
retrieve, from the secondary state machine, a version number associated with the secondary state machine;
compare a version of the primary state machine to a version number associated with the secondary state machine;
perform a secondary state machine update operation based on the comparison of the version number of the primary state machine to the version number associated with the secondary state machine; and
release the read-committed isolation level lock on the secondary state machine.
