RDF/IMP, IMPX, and ZLT System Management Manual

Network Transactions
HP NonStop RDF/IMP, IMPX, and ZLT System Management Manual524388-002
13-11
The Effects of Undoing Network Transactions
Besides transaction T
12
, transactions T
14
and T
15
must also be undone on \X because
they followed the commit of T
12
on \A and their database changes could have been
based on the committed outcome of T
12
. If T
14
and T
15
are not also undone, database
consistency could be compromised because their effects on the database might have
been based upon data that was backed out. Note that T
14
is a local transaction, not a
network transaction. Nonetheless, its database changes could have been based on
the outcome of T
12
and therefore must be undone. Thus, both network and business
consistency are maintained.
T
13
does not, however, have to be undone even though it committed on \A after T
12
.
Why? Because the purger on \X (the network master) determines that, although T
13
followed T
12
on \A, the sequence for these two commits had to have been reversed on
\B, where the commit for T
13
preceded the commit for T
12
. Therefore, the purger
determines that these two transactions could not have touched the same data, and T
13
does not need to be undone.
This illustrates a very important point. With network transactions, the commit
sequence of network transactions may differ from one node to another, depending on
where the transactions originated. For example, consider two network transactions:
T
101
and T
102
. Assume T
101
originated on \M and T
102
originated on \N. Assume
further that they altered data on both \M and \N, and committed at the same time. The
commit operation for T
101
is coordinated by the TMP on \M because that is where T
101
originated; similarly, T
102
is coordinated by the TMP on \N because that is where T
102
originated. Thus, on \M, the sequence of commit records on the audit trail will likely be
T
101
followed by T
102
, whereas on \N it will likely be T
102
followed by T
101
.
Note, for the following two reasons, that we can be certain T
101
and T
102
did not alter
the same data:
1. Transaction record locking would have prevented these transactions from altering
the same data.
2. The commit sequence on \M being T
101
followed by T
102
and the commit
sequence on \N being T
102
followed by T
101
unequivocably means that these two
transactions were active at the same time and committed at the same time.
Therefore they could not have altered the same data.
If we return to the issue of T
13
in the example further above, note that the commit
sequence differs on \A and \B. When the purger on \A determines that T
12
, T
14
, and
T
15
must be undone, it also determines that the results of T
13
can be kept intact
because T
13
had to have completed on \B before T
12
. Why? The commit records on
\A guarantee that both T
12
and T
13
did indeed commit. Therefore, although the
commit record for T
12
is missing from \B, the commit record for T
13
is present. This
guarantees that T
13
committed prior to T
12
, and that the results of T
13
can be kept
intact on both nodes.
When a purger determines that it can keep the results of a transaction even though
that transaction follows one that must be undone because data for it is missing