Consider the following example:
Syncpoint example: An order-entry
transaction is designed so that, when an order for an item is entered
from a terminal: - An inventory file is queried and decremented by
the order quantity.
- An order for dispatch of the goods is written
to an intrapartition transient data queue.
- A synchronization point is taken to indicate the end of
the current UOW.
In a single CICS® system, the syncpoint causes
steps 1 and 2 both
to be committed.
The same result is required if the inventory
file is owned by a remote system and is accessed by means of, for
example, CICS function shipping. This is achieved in the following
way:
- When the local transaction issues the syncpoint request, CICS
sends a syncpoint request to the remote transaction (in this case,
the CICS mirror transaction).
- The remote transaction commits the change to the inventory file
and sends a positive response to the local CICS system.
- CICS commits the change to the transient data queue.
During the period between the sending of the syncpoint
request to the remote system and the receipt of the reply, the local
system does not know whether the remote system has committed the change. This period is known as the indoubt period,
as illustrated in Figure 1.
If
the intersystem session fails before the indoubt period is reached,
both sides back out in the normal way. After this period, both sides
have committed their changes. If, however, the intersystem
session fails during the indoubt period, the local CICS system cannot
tell whether the remote system committed or backed out its changes.