Details
-
Feature Request
-
Resolution: Unresolved
-
Optional
-
None
-
None
-
None
-
High
Description
Note that this issue is not scheduled and is low priority. To start, it is just a point to conjecture implementation possibilities.
Provide the ability for a data source (or other XA resource) to be utilized from multiple nodes in the distributed JTA node graph. This may allow multiple nodes to operate within the same transaction on these resources.
The requirements are:
- The XA resource in question must support multiple connections
- A way is needed to ensure that all nodes are using the same branch qualifier for the given resource
- A way is needed to decide which node is the "master" for the given resource
Requirement #2 is necessary because otherwise the node in question may not be able to correlate the incoming connections.
Requirement #3 is necessary to avoid multiple nodes preparing the transaction. The usual JTA technique of using isSameRM does not work because every node has their own partial view of the complete set of XA resources involved in the distributed transaction.
Some possible ideas (not complete and not mutually inclusive or exclusive):
- Allow hard-coding a branch qualifier for a resource in some way, so all nodes always use the same branch ID for a given resource
- Somehow communicate all resource enlistments to the root node during prepare so the root node can determine which ones need to be prepared via isSameRM checks (this would require serializing the XA resources, which in turn requires (more or less) all nodes to have all classes for all resources present and loadable)
- Revisit idea of hierarchical branch qualifiers
- ...(add your idea here!)