Previous topic |
Next topic |
Contents |
Contact z/OS |
Library |
PDF
Unit of work identifiers z/OS MVS Programming: Resource Recovery SA23-1395-00 |
|||||||||||||||||||||
Unit of work IDs are persistent tokens used to identify a transaction.
They are persistent because they are hardened by resource managers
and transaction managers during syncpoint processing. Because they
are persistent, they can be used to identify a particular transaction,
part of a transaction, or both during normal processing and during
restart processing.
Note: Resource managers sometimes use work IDs
for other purposes. For example, XIDs are sometimes used as "lock
tokens" by data managers. A lock token identifies the owner of a database
lock; therefore, any program executing with a given lock token can
access data controlled by the token.
RRS
supports the following work IDs:
A URID is a local identifier specific to RRS. It is RRS-specific because it is not defined by any standards body and is only used by RRS and the resource managers that work directly with RRS. A URID is a local identifier because a URID is associated with a single unit of recovery. A distributed or cascaded transaction with many separate nodes and many URs will have many different URIDs. LUWIDs, EIDs, and XIDs are all global identifiers or a combination of a global identifier and a nonglobal identifier. A LUWID is defined by the SAA LU 6.2 syncpoint architecture to identify a distributed transaction using the LU 6.2 protocols. It is a global identifier: all of the nodes in a distributed transaction that are part of a nondisjoint LU 6.2 transaction subtree have the same LUWID. An EID is both a local and a global identifier. The first 4–bytes of an EID are the transaction identifier (TID). The TID is a local identifier: each node in a distributed transaction can have a different TID. The remaining 8–40 bytes of the EID are the global transaction identifier (GTID). The GTID is a global identifier: all of the nodes in a nondisjoint distributed transaction subtree managed by a communication resource manager using EIDs have the same GTID. An XID is defined by the X/Open XA standard. In addition to the length and FormatID fields, an XID has two important parts: the global transaction identifier (GTRID) and the branch qualifier (BQUAL). The GTRID is a global identifier. All of the nodes in a nondisjoint distributed transaction managed by an X/Open compliant communications manager will have the same GTRID. The BQUAL, however, is not a simple local identifier. Communications resource managers use the BQUAL to denote tightly-coupled and loosely-coupled transaction nodes. Table 1 shows the differences between tightly-coupled and loosely-coupled transaction nodes.
Nodes in a distributed transaction connected by a communication
resource manager that does not use XIDs are normally loosely-coupled,
as are cascaded transactions created by RRS. There are, however, exceptions.
For example, APPC/MVS will set the same XID in each UR it creates,
but send separate two-phase commit flows to each node, under the following
conditions:
When RRS creates a cascaded transaction, each UR in the cascaded UR family will have an XID. Each UR's XID will have the same FORMATID and GTRID, but by default each will have a different BQUAL. When creating a cascaded UR via a call to the Express_UR_Interest service, a work manager can override this default behavior and directly control the BQUAL that RRS will use for the UR by specifying an XID on the call. RRS automatically creates a URID whenever it creates a UR. RRS assigns an XID to a UR whenever the UR becomes part of a cascaded UR family. Otherwise, RRS assigns LUWIDs, EIDs, and XIDs to URs as indicated on either the Set_Work_Identifier service or the Retrieve_Work_Identifier service. Table 2 lists each identifier, its
format, whether RRS can generate it, and how RRS propagates the identifier
when creating a cascaded UR.
|
Copyright IBM Corporation 1990, 2014
|