Share via


1.3.5 Transaction Propagation

A single transaction typically requires work to be performed by one or more resource managers for one or more applications. Each of these applications and resource managers is typically associated with exactly one transaction manager.

When two participants share a common transaction manager, all that is needed to share a transaction is agreement on the transaction's unique identifier. How this unique identifier is communicated among the applications and resource managers is implementation-specific.

However, when two participants do not share a common transaction manager, this protocol defines a propagation mechanism that enables the two participants to notify their respective transaction managers that a specified transaction will span the two transaction managers. Transaction propagation allows applications and resource managers to freely marshal transactions across process and host machine boundaries by using whatever communication mechanisms and formats they chose.

When a participant (the source) determines that it marshals a transaction to a second participant (the destination), the participant chooses between two distinct propagation techniques:

Push propagation requires the source participant to have a prior knowledge about which transaction manager the destination participant is associated with. In contrast, pull propagation allows the source participant to marshal the transaction without any awareness of the transaction manager of the destination participant.

Independent of the choice of push or pull propagation, after the propagation is complete, the destination transaction manager will have enlisted with the source transaction manager to coordinate the outcome of the transaction. In this enlistment, the source transaction manager plays the role of superior transaction manager, and the destination transaction manager plays the role of subordinate transaction manager.