IP Library Granted Patent US 11,044,336
Granted Patent B2
US 11,044,336 · App. 15/882,863 · Granted Jun 22, 2021

Systems, methods, and apparatuses for capturing data change events in a cloud based computing environment

Inventors: Alexey Syomichev (Westport, CT); David Angulo (Boulder, CO)
Assignee: salesforce.com, inc.
H04L67/2852G06F3/0656G06F16/1734G06F16/1844G06F16/252H04L67/1004H04L67/1095H04L67/1097
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,044,336
App. No.
15/882,863
Granted
Jun 22, 2021
Kind
B2
Abstract

A software application executing on a selected application server in a cluster of application servers stores in a buffer in a memory of the selected application server a payload of data and a corresponding key. The application transfers a copy of the payload of data and the corresponding key to a selected second application server in the cluster, and creates a record in an entry in a transaction log stored in a database to which the cluster of applications servers has access, the record including: the corresponding key, a first value identifying the selected second application server to which the copy of the payload of data and corresponding key were transferred, and a second value identifying the selected first application server in which the payload of data and corresponding key were stored.

Claims (89)

1. A method performed by a cluster of application servers, each having at least a processor and a memory therein, and access to a persistent data store, the method comprising:

a software application executing on a selected first application server in the cluster performing the steps of:

storing in a buffer in the memory of the selected first application server a payload of data associated with a transaction performed by the software application with the persistent data store and a corresponding key that indicates a logical point in time at which the associated transaction was committed to the persistent data store, wherein the key sequences the associated transaction based on the order in which it was performed with the persistent data store when a plurality of transactions are sent to an external system;

transferring a copy of the payload of data and the corresponding key to a selected second application server in the cluster; and

creating a record in an entry in a transaction log stored in a database system to which the cluster of applications servers has access, the record including: the corresponding key, a first value identifying the selected second application server to which the copy of the payload of data and corresponding key were transferred, and a second value identifying the selected first application server in which the payload of data and corresponding key were stored, wherein the database system uses the key to restrict recovery operations from altering changes made to the database system.

2. The method of claim 1 , wherein further comprising:

receiving a first user input at a load balancer for the cluster;

selecting, by the load balancer, an application server in the cluster to which to transmit the first user input as the selected first application server;

transmitting the first user input to the selected first application server; and

performing, by the software application executing on the selected first application server, a transaction with the persistent data store, responsive to the first user input.

3. The method of claim 1 , further comprising a software application executing on the selected second application server performing the steps of storing in a buffer in the memory of the selected second application server the copy of the payload of data and the corresponding key.

4. The method of claim 3 , further comprising:

the software application executing on the selected second application server performing the steps of:

searching first for the copy of the payload of data in the memory buffer in the selected second application server, using the corresponding key as an index to locate the copy; and

reading the copy of the payload of data from the memory buffer in the selected second application server, and transmitting the copy of the payload of data to a software application executing outside the cluster of application servers, when the first searching finds the copy.

5. The method of claim 4 , further comprising:

the software application executing on the selected second application server performing the steps of:

searching second the transaction log for the record, using the corresponding key as an index to locate the record, when the first searching fails to find the copy; and

searching third the record for a value identifying an application server other than the selected second application server, finding the second value identifying the selected first application server, and sending a request to the selected first application server to transfer the payload of data to the software application executing on the selected second application server, when the second searching finds the record.

6. The method of claim 5 , further comprising:

the software application executing on the first application server performing the steps of:

searching fourth for the payload of data in the memory buffer in the selected first application server, when the third searching finds the second value identifying the selected first application server; and

reading the payload of data from the memory buffer in the selected first application server and transferring the payload of data to the software application executing on the selected second application server, when the fourth searching finds the payload.

7. The method of claim 6 , further comprising the software application executing on the selected second application server transmitting the payload of data to the software application executing outside the cluster of application servers.

8. The method of claim 5 , further comprising:

the software application executing on the selected first application server in the cluster further performing the steps of:

transferring a second copy of the payload of data and the corresponding key to a selected third application server in the cluster;

adding to the record in the transaction log a third value identifying the selected third application server to which the second copy of the payload of data and corresponding key were transferred; and

the software application executing on the selected second application server performing the steps of:

searching fourth the record for a value identifying an application server other than the selected second application server, finding the third value identifying the selected third application server, and sending a request to the selected third application server to transfer the second copy of the payload of data to the software application executing on the selected second application server, when the request to the selected first application server to transfer the payload of data to the software application executing on the selected second application server fails.

9. A system to execute within a host organization, wherein the system comprises a cluster of application servers, each having at least a processor and a memory therein, and access to a persistent data store, the processor and memory to execute a software application executing on a selected first application server in the cluster performing the steps of:

storing in a buffer in the memory of the selected first application server a payload of data associated with a transaction performed by the software application with the persistent data store and a corresponding key that indicates a logical point in time at which the associated transaction was committed to the persistent data store, wherein the key sequences the associated transaction based on the order in which it was performed with the persistent data store when a plurality of transactions are sent to an external system;

transferring a copy of the payload of data and the corresponding key to a selected second application server in the cluster; and

creating a record in an entry in a transaction log stored in a database system to which the cluster of applications servers has access, the record including: the corresponding key, a first value identifying the selected second application server to which the copy of the payload of data and corresponding key were transferred, and a second value identifying the selected first application server in which the payload of data and corresponding key were stored, wherein the database system uses the key to restrict recovery operations from altering changes made to the database system.

10. The system of claim 9 , further comprising:

means for receiving a first user input at a load balancer for the cluster;

means for selecting, by the load balancer, an application server in the cluster to which to transmit the first user input as the selected first application server;

means for transmitting the first user input to the selected first application server; and

means for performing, by the software application executing on the selected first application server, a transaction with the persistent data store, responsive to the first user input.

11. The system of claim 9 , further comprising means for storing in a buffer in the memory of the selected second application server the copy of the payload of data and the corresponding key.

12. The system of claim 11 , further comprising:

means for searching first for the copy of the payload of data in the memory buffer in the selected second application server, using the corresponding key as an index to locate the copy; and

means for reading the copy of the payload of data from the memory buffer in the selected second application server, and transmitting the copy of the payload of data to a software application executing outside the cluster of application servers, when the first searching finds the copy.

13. The system of claim 12 , further comprising:

means searching second the transaction log for the record, using the corresponding key as an index to locate the record, when the first searching fails to find the copy; and

means for searching third the record for a value identifying an application server other than the selected second application server, finding the second value identifying the selected first application server, and sending a request to the selected first application server to transfer the payload of data to the software application executing on the selected second application server, when the second searching finds the record.

14. The system of claim 13 , further comprising:

means for searching fourth for the payload of data in the memory buffer in the selected first application server, when the third searching finds the second value identifying the selected first application server; and

means for reading the payload of data from the memory buffer in the selected first application server and transferring the payload of data to the software application executing on the selected second application server, when the fourth searching finds the payload.

15. The system of claim 14 , further comprising the means for transmitting the payload of data to the software application executing outside the cluster of application servers.

16. The system of claim 13 , further comprising:

means for transferring a second copy of the payload of data and the corresponding key to a selected third application server in the cluster;

means for adding to the record in the transaction log a third value identifying the selected third application server to which the second copy of the payload of data and corresponding key were transferred; and

means for searching fourth the record for a value identifying an application server other than the selected second application server, finding the third value identifying the selected third application server, and sending a request to the selected third application server to transfer the second copy of the payload of data to the software application executing on the selected second application server, when the request to the selected first application server to transfer the payload of data to the software application executing on the selected second application server fails.

17. Non-transitory computer readable storage media having instructions stored thereon that, when executed by a cluster of application servers, each having at least a processor and a memory therein, and access to a persistent data store, cause a selected first application server in the cluster to perform the steps of:

storing in a buffer in the memory of the selected first application server a payload of data associated with a transaction performed by the software application with the persistent data store and a corresponding key that indicates a logical point in time at which the associated transaction was committed to the persistent data store, wherein the key sequences the associated transaction based on the order in which it was performed with the persistent data store when a plurality of transactions are sent to an external system;

transferring a copy of the payload of data and the corresponding key to a selected second application server in the cluster; and

creating a record in an entry in a transaction log stored in a database system to which the cluster of applications servers has access, the record including: the corresponding key, a first value identifying the selected second application server to which the copy of the payload of data and corresponding key were transferred, and a second value identifying the selected first application server in which the payload of data and corresponding key were stored, wherein the database system uses the key to restrict recovery operations from altering changes made to the database system.

18. The non-transitory computer readable storage media of claim 17 , further comprising instructions to perform the steps of:

receiving a first user input at a load balancer for the cluster;

selecting, by the load balancer, an application server in the cluster to which to transmit the first user input as the selected first application server;

transmitting the first user input to the selected first application server; and

performing, by the software application executing on the selected first application server, a transaction with the persistent data store, responsive to the first user input.

19. The non-transitory computer readable storage media of claim 17 , further comprising instructions that cause a software application executing on the selected second application server to perform the steps of storing in a buffer in the memory of the selected second application server the copy of the payload of data and the corresponding key.

20. The non-transitory computer readable storage media of claim 19 , further comprising instructions that causes the software application executing on the selected second application server to perform the steps of:

searching first for the copy of the payload of data in the memory buffer in the selected second application server, using the corresponding key as an index to locate the copy; and

reading the copy of the payload of data from the memory buffer in the selected second application server, and transmitting the copy of the payload of data to a software application executing outside the cluster of application servers, when the first searching finds the copy.

21. The non-transitory computer readable storage media of claim 20 , further comprising instructions that cause the software application executing on the selected second application server to perform the steps of:

searching second the transaction log for the record, using the corresponding key as an index to locate the record, when the first searching fails to find the copy; and

searching third the record for a value identifying an application server other than the selected second application server, finding the second value identifying the selected first application server, and sending a request to the selected first application server to transfer the payload of data to the software application executing on the selected second application server, when the second searching finds the record.

22. The non-transitory computer readable storage media of claim 21 , further comprising instructions that cause the software application executing on the first application server to perform the steps of:

searching fourth for the payload of data in the memory buffer in the selected first application server, when the third searching finds the second value identifying the selected first application server; and

reading the payload of data from the memory buffer in the selected first application server and transferring the payload of data to the software application executing on the selected second application server, when the fourth searching finds the payload.

23. The non-transitory computer readable storage media of claim 22 , further comprising instructions that cause the software application executing on the selected second application server to perform the step of transmitting the payload of data to the software application executing outside the cluster of application servers.

24. The non-transitory computer readable storage media of claim 21 , further comprising instructions that:

cause the software application executing on the selected first application server in the cluster to further perform the steps of:

transferring a second copy of the payload of data and the corresponding key to a selected third application server in the cluster;

adding to the record in the transaction log a third value identifying the selected third application server to which the second copy of the payload of data and corresponding key were transferred; and

cause the software application executing on the selected second application server to perform the steps of:

searching fourth the record for a value identifying an application server other than the selected second application server, finding the third value identifying the selected third application server, and sending a request to the selected third application server to transfer the second copy of the payload of data to the software application executing on the selected second application server, when the request to the selected first application server to transfer the payload of data to the software application executing on the selected second application server fails.

25. The method of claim 1 :

wherein the cluster of application servers implement on-demand cloud computing services provided to subscribers of the cloud computing platform; and

wherein the user is associated with one of a plurality of customer organizations having subscriber access to the on-demand cloud computing services provided by the cloud computing platform.

26. The system of claim 9 :

wherein the cluster of application servers implement on-demand cloud computing services provided to subscribers of the cloud computing platform; and

wherein the user is associated with one of a plurality of customer organizations having subscriber access to the on-demand cloud computing services provided by the cloud computing platform.

27. The non-transitory computer readable storage media of claim 17 :

wherein the cluster of application servers implement on-demand cloud computing services provided to subscribers of the cloud computing platform; and

wherein the user is associated with one of a plurality of customer organizations having subscriber access to the on-demand cloud computing services provided by the cloud computing platform.

Assignments (4)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0318 →
PERFECTION CERTIFICATE Recorded Dec 1, 2021
From: K2 SOFTWARE, INC.; ASSURESIGN, LLC
To: NINTEX USA, INC.
Reel/Frame 058292/0509 →
SECURITY INTEREST Recorded Nov 17, 2021
From: NINTEX USA, INC.; K2 SOFTWARE, INC.; ASSURESIGN, LLC
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 058173/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2018
From: SYOMICHEV, ALEXEY; ANGULO, DAVID
To: SALESFORCE.COM, INC.
Reel/Frame 045941/0013 →
Continuity (1)
Related Publication 20190238653A1 · Aug 1, 2019
Cited By (1)
US 12,585,668