Horizontally scalable and reliable distributed transaction management in a clustered application server environment
First Claim
1. A system, comprising:
- a server cluster, comprising;
a plurality of server nodes, wherein each server node comprises;
an application server instance;
one or more applications configured to execute within the application server instance and to initiate one or more global transactions each involving a set of data modifying operations to be committed to a plurality of storage resources atomically; and
one or more separate transaction manager instances each configured to execute within the application server instance;
wherein each separate transaction manager instance for each application server instance is configured to coordinate transactions initiated within that application server instance, and to log in a transaction log an intermediate status of each uncommitted transaction of the transactions initiated within the application server instance;
wherein the server cluster is configured to;
detect a failure of one of the plurality of application server instances of the cluster; and
in response to said detecting, select one or more surrogate transaction manager instances from one or more of the application server instances of the server cluster that are still operational;
wherein the one or more surrogate transaction manager instances are configured to read one or more transaction logs of the failed application server and to complete one or more uncommitted transactions indicated by the one or more transaction logs of the failed application server;
wherein the one or more application server instances having the one or more surrogate transaction manager instances are configured to attempt to recover each in-flight transaction entry in a transaction log of the failed server, wherein for each log entry one or more of the application server instances having one of the one or more surrogate transaction manager instances are configured to open connections to all data sources involved in the transaction corresponding to the log entry, and if all connections are successful, recover the transaction.
2 Assignments
0 Petitions
Accused Products
Abstract
Various embodiments of a cluster of application servers in a networked computer system in which each application server includes a separate transaction manager instance are disclosed. In one embodiment, a separate transaction manager instance may be used to coordinate transactions initiated by an application component executing in process with the application server for a node of a cluster. If each transaction manager instance manages only transactions initiated within its own application server, then the loss of a single transaction manager instance may have no detrimental effect on transactions initiated in other nodes of the cluster. Further, if each transaction manager instance maintains its transaction logs in highly available memory accessible to all nodes of the cluster, in flight transactions of a failed node may be recovered by an instance in a different node.
-
Citations
41 Claims
-
1. A system, comprising:
-
a server cluster, comprising; a plurality of server nodes, wherein each server node comprises; an application server instance; one or more applications configured to execute within the application server instance and to initiate one or more global transactions each involving a set of data modifying operations to be committed to a plurality of storage resources atomically; and one or more separate transaction manager instances each configured to execute within the application server instance; wherein each separate transaction manager instance for each application server instance is configured to coordinate transactions initiated within that application server instance, and to log in a transaction log an intermediate status of each uncommitted transaction of the transactions initiated within the application server instance; wherein the server cluster is configured to; detect a failure of one of the plurality of application server instances of the cluster; and in response to said detecting, select one or more surrogate transaction manager instances from one or more of the application server instances of the server cluster that are still operational; wherein the one or more surrogate transaction manager instances are configured to read one or more transaction logs of the failed application server and to complete one or more uncommitted transactions indicated by the one or more transaction logs of the failed application server; wherein the one or more application server instances having the one or more surrogate transaction manager instances are configured to attempt to recover each in-flight transaction entry in a transaction log of the failed server, wherein for each log entry one or more of the application server instances having one of the one or more surrogate transaction manager instances are configured to open connections to all data sources involved in the transaction corresponding to the log entry, and if all connections are successful, recover the transaction. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method, comprising:
-
operating one or more separate transaction manager instances in each node of an application server cluster; one or more applications initiating a plurality of global transactions in each server node, wherein each of the plurality of global transactions involves a set of data modifying operations to be committed to a plurality of storage resources atomically; coordinating transactions initiated in a particular server node by the one or more transaction manager instances operating in that node; each transaction manager instance maintaining transaction logs for transactions it manages in a highly available storage, wherein each transaction log contains an intermediate status of each uncommitted transaction of the transactions it manages and is usable by another transaction manager instance to recover the uncommitted transactions if the transaction manager fails; detecting a failure of one of the plurality of application server instances of the cluster; in response to said detecting, selecting one or more surrogate transaction manager instances from one or more of the application server instances of the server cluster that are still operational; reading, by the one or more selected surrogate transaction manager instances, one or more transaction logs of the failed application server and to complete one or more uncommitted transactions indicated by the one or more transaction logs of the failed application server; and attempting, by one or more application server instances having the one or more selected surrogate transaction manager instances, to recover each in-flight transaction entry in a transaction log of the failed server, wherein said attempting comprises, for each log entry, opening connections to all data sources involved in the transaction corresponding to the log entry, and if all connections are successful, recover the transaction. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A computer accessible storage medium storing program instructions that when executed on one or more computers cause the one or more computers to:
-
operate a separate transaction manager instance in each node in an application server cluster; initiate one or more transactions in each server node, wherein each of the one or more transactions involves a set of data modifying operations to be committed to a plurality of storage resources atomically; coordinate transactions initiated in a particular server node by the transaction manager instance operating in that node; and maintain transaction logs for each transaction manager instance in highly available storage, wherein each transaction log contains an intermediate status of each initiated but uncommitted transaction of the one or more transactions managed by the transaction manager and wherein the log is usable by another transaction manager instance to recover the uncommitted transactions if the transaction manager fails; detect a failure of one of the plurality of application server instances of the cluster; in response to said detect, select one or more surrogate transaction manager instances from one or more of the application server instances of the server cluster that are still operational; read, by the one or more selected surrogate transaction manager instances, one or more transaction logs of the failed application server and to complete one or more uncommitted transactions indicated by the one or more transaction logs of the failed application server; and attempt, by one or more application server instances having the one or more selected surrogate transaction manager instances, to recover each in-flight transaction entry in a transaction log of the failed server, wherein said attempting comprises, for each log entry, opening connections to all data sources involved in the transaction corresponding to the log entry, and if all connections are successful, recover the transaction. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41)
-
Specification