IP Library Granted Patent US 11,080,086
Granted Patent B1
US 11,080,086 · App. 16/351,292 · Granted Aug 3, 2021

Reactive transaction management

Inventors: Mark Paluch (Weinheim, DE); Joseph Benjamin Hale (Corte Madera, CA)
Assignee: Pivotal Software, Inc.
G06F9/466G06F9/467G06F9/468G06F9/5016G06F9/5022G06F11/1474G06F16/1865G06F16/2308G06F9/528G06F2221/0795
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,080,086
App. No.
16/351,292
Granted
Aug 3, 2021
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for implementing reactive transaction management. A method includes: receiving, by an application framework, a program that defines a transaction having a plurality of operations to one or more respective transactional resources; generating, by the application framework, a respective sequence of reactive operators for each transactional resource in the transaction; initiating each respective sequence of reactive operators, including: determining, by the application framework using a first thread, that one of the sequences has not completed; in response, relinquishing computing resources of the first thread; receiving an indication that all of the sequences of reactive operators have completed; determining that none of the sequences of reactive operators failed; and in response, committing the operations of the transaction in each of the one or more transactional resources.

Claims (64)

1. A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving, by an application framework, a program that defines a transaction having a plurality of operations to one or more respective transactional resources;

generating, by the application framework, a respective sequence of reactive operators for each transactional resource in the transaction;

initiating each respective sequence of reactive operators, including:

storing transaction metadata in a subscription context for the sequence,

evaluating the sequence of reactive operators in an upstream subscription flow ordering until evaluating an operator that connects to the transactional resource, and passing the subscription context for the sequence to each subsequent operator in the sequence, and

evaluating the sequence of reactive operators in a downstream data flow ordering when the operator that connects to the transactional resource begins receiving data;

determining, by the application framework using a first thread, that one of the sequences has not completed;

in response to the determining that one of the sequences has not completed, relinquishing computing resources of the first thread;

receiving an indication that all of the sequences of reactive operators have completed;

determining whether none of the sequences of reactive operators failed; and

in response to determining that none of the sequences of reactive operators failed, committing the operations of the transaction in each of the one or more transactional resources.

2. The system of claim 1 , the operations further comprising:

in response to determining that at least one of the sequences of reactive operators failed, reverting the operations of the transaction in each of the one or more transactional resources.

3. The system of claim 1 , wherein the program includes a special directive that directs the system to reactive transaction management for the operations of the transaction.

4. The system of claim 1 , wherein the program that defines a transaction having a plurality of operations to one or more respective transactional resources comprises a reactive operator defining the transaction.

5. The system of claim 1 , wherein the program defines the operations of the transaction using a callback function defined in the application framework, wherein executing the callback function identifies the transaction having the operations.

6. The system of claim 1 , wherein the transaction metadata is immutable in the downstream data flow.

7. The system of claim 1 , wherein the first transaction resource is a system supporting transactions.

8. The system of claim 7 , wherein the first transactional resource is a relational database.

9. The system of claim 7 , wherein the first transactional resource is a messaging system.

10. The system of claim 1 , wherein determining that none of the sequences of reactive operators failed comprises receiving an indication, from each transactional resource in the one or more transactional resources, that operations for the transactional resource executed successfully.

11. The system of claim 1 , wherein the system is configured to concurrently maintain a predetermined maximum number of threads, each thread associated with computing resources from the one or more computers.

12. A method comprising:

receiving, by an application framework, a program that defines a transaction having a plurality of operations to one or more respective transactional resources;

generating, by the application framework, a respective sequence of reactive operators for each transactional resource in the transaction;

initiating each respective sequence of reactive operators, including:

storing transaction metadata in a subscription context for the sequence,

evaluating the sequence of reactive operators in an upstream subscription flow ordering until evaluating an operator that connects to the transactional resource, and passing the subscription context for the sequence to each subsequent operator in the sequence, and

evaluating the sequence of reactive operators in a downstream data flow ordering when the operator that connects to the transactional resource begins receiving data;

determining, by the application framework using a first thread, that one of the sequences has not completed;

in response to the determining that one of the sequences has not completed, relinquishing computing resources of the first thread;

receiving an indication that all of the sequences of reactive operators have completed;

determining whether none of the sequences of reactive operators failed; and

in response to determining that none of the sequences of reactive operators failed, committing the operations of the transaction in each of the one or more transactional resources.

13. The method of claim 12 , the operations further comprising:

in response to determining that at least one of the sequences of reactive operators failed, reverting the operations of the transaction in each of the one or more transactional resources.

14. The method of claim 12 , wherein the program includes a special directive that directs the system to reactive transaction management for the operations of the transaction.

15. The method of claim 12 , wherein the program that defines a transaction having a plurality of operations to one or more respective transactional resources comprises a reactive operator defining the transaction.

16. The method of claim 12 , wherein the program defines the operations of the transaction using a callback function defined in the application framework, wherein executing the callback function identifies the transaction having the operations.

17. The method of claim 12 , wherein the transaction metadata is immutable in the downstream data flow.

18. The method of claim 12 , wherein determining that none of the sequences of reactive operators failed comprises receiving an indication, from each transactional resource in the one or more transactional resources, that operations for the transactional resource executed successfully.

19. The method of claim 12 , wherein the system is configured to concurrently maintain a predetermined maximum number of threads, each thread associated with computing resources from the one or more computers.

20. One or more computer-readable storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:

receiving, by an application framework, a program that defines a transaction having a plurality of operations to one or more respective transactional resources;

generating, by the application framework, a respective sequence of reactive operators for each transactional resource in the transaction;

initiating each respective sequence of reactive operators, including:

storing transaction metadata in a subscription context for the sequence,

evaluating the sequence of reactive operators in an upstream subscription flow ordering until evaluating an operator that connects to the transactional resource, and passing the subscription context for the sequence to each subsequent operator in the sequence, and

evaluating the sequence of reactive operators in a downstream data flow ordering when the operator that connects to the transactional resource begins receiving data;

determining, by the application framework using a first thread, that one of the sequences has not completed;

in response to the determining that one of the sequences has not completed, relinquishing computing resources of the first thread;

receiving an indication that all of the sequences of reactive operators have completed;

determining whether none of the sequences of reactive operators failed; and

in response to the determining that none of the sequences of reactive operators failed, committing the operations of the transaction in each of the one or more transactional resources.

21. The computer-readable storage media of claim 20 , wherein the instructions further cause the one or more computers to perform operations comprising:

in response to determining that at least one of the sequences of reactive operators failed, reverting the operations of the transaction in each of the one or more transactional resources.

22. The computer-readable storage media of claim 20 , wherein the program includes a special directive that directs the system to reactive transaction management for the operations of the transaction.

23. The computer-readable storage media of claim 20 , wherein the program that defines a transaction having a plurality of operations to one or more respective transactional resources comprises a reactive operator defining the transaction.

24. The computer-readable storage media of claim 20 , wherein the program defines the operations of the transaction using a callback function defined in the application framework, wherein executing the callback function identifies the transaction having the operations.

25. The computer-readable storage media of claim 20 , wherein the transaction metadata is immutable in the downstream data flow.

26. The computer-readable storage media of claim 20 , wherein determining that none of the sequences of reactive operators failed comprises receiving an indication, from each transactional resource in the one or more transactional resources, that operations for the transactional resource executed successfully.

27. The computer-readable storage media of claim 20 , wherein the system is configured to concurrently maintain a predetermined maximum number of threads, each thread associated with computing resources from the one or more computers.

Assignments (2)
MERGER Recorded May 20, 2026
From: PIVOTAL SOFTWARE, INC.
To: VMWARE LLC
Reel/Frame 075613/0593 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2019
From: PALUCH, MARK; HALE, JOSEPH BENJAMIN
To: PIVOTAL SOFTWARE, INC.
Reel/Frame 048712/0209 →