A Gateway daemon cold start option is provided to resolve
heuristically-completed transactions. A heuristic error might occur
after the failure of a transactional component, or manual intervention
by an operator through the RRS panels.
In normal operation, the XA transaction manager component is responsible
for issuing requests to
"forget" transaction branches that have
been heuristically resolved. If there is a heuristic error and the
transaction manager is still running, it issues a
"forget" call
directly. However, if there is a heuristic error and the transaction
manager is restarted before it has time to issue a
"forget" call,
the following happens:
- The transaction manager issues a "recover" call on startup.
- The recover returns a list of prepared and heuristically-completed
transactions.
- The transaction manager issues "forget" calls as appropriate.
In exceptional cases, the XA transaction manager might not have
a record of a transaction branch being in
"InForget" state, whereas
RRS still has a record of the transaction branch being
"InForget",
"InCommit" or
"InBackout" state.
In this situation, the XA transaction manager does not issue an XA
"forget" call,
even if the Unit of Recovery (UR) is returned in response to an XA
recover flow. This can happen:
- If the XA transaction manager is unable to issue the XA "forget" call
and is timed out after multiple attempts (if the transaction manager
issues a "forget" call to the Gateway, the "forget" call
fails, the transaction manager repeats this and eventually times out
issuing the "forget" call).
- If RRS recreates committed or backed out units of recovery (UR)
during CICS® Transaction Gateway
restart processing (when RRS is restarted, or if a UR has been completed
by a different Gateway daemon with the HA group).
The Gateway daemon indicates the number of recovered URs during
initialization by issuing message CTG8628I. If this number is greater
than zero, review the outstanding URs through RRS and consider restarting
the Gateway daemon using the cold start option to remove those URs
in
"InForget" state. If a cold start is not specified (normal
start), CICS Transaction Gateway
does not issue any forget calls and the URs remain visible in RRS.
URs in "InCommit" or in "InBackout" state have been resolved
by a Gateway daemon in the HA group on behalf of another Gateway daemon,
following a failure during two-phase commit processing. Such URs progress
to "InForget" state, when the resolving Gateway daemon is shut
down. These URs are cleared when the originating Gateway daemon performs
a cold start. The statistic GD_LXACOMP indicates when a Gateway daemon
has resolved XA transactions on behalf of another Gateway daemon in
the HA group.