ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzakj_5.4.0.1/rzakjokleaveout.htm

115 lines
8.3 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="concept" />
<meta name="DC.Title" content="Commitment definition for two-phase commit: Indicate OK to leave out" />
<meta name="abstract" content="Normally, the transaction manager at every location in the transaction program network participates in every commit or rollback operation. To improve performance, you can set up some or all locations in a transaction to allow the transaction manager to indicate OK to leave out." />
<meta name="description" content="Normally, the transaction manager at every location in the transaction program network participates in every commit or rollback operation. To improve performance, you can set up some or all locations in a transaction to allow the transaction manager to indicate OK to leave out." />
<meta name="DC.Relation" scheme="URI" content="rzakjcommitdefs_tp.htm" />
<meta name="DC.Relation" scheme="URI" content="rzakjoptimize.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2004, 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2004, 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="rzakjokleaveout" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Commitment definition for two-phase commit: Indicate OK to leave out</title>
</head>
<body id="rzakjokleaveout"><a name="rzakjokleaveout"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Commitment definition for two-phase commit: Indicate OK to leave out</h1>
<div><p>Normally, the transaction manager at every location in the transaction
program network participates in every commit or rollback operation. To improve
performance, you can set up some or all locations in a transaction to allow
the transaction manager to indicate OK to leave out.</p>
<div class="note"><span class="notetitle">Note:</span> The Indicate OK to leave out option does not apply if you are using
a DRDA<sup>®</sup> distributed
unit of work over TCP/IP connection.</div>
<p>If no communications flows are sent to the location during a transaction,
the location is left out when a commit or rollback operation is performed.
This improves overall performance because the communications flows that normally
occur during the commit or rollback are eliminated during transactions in
which no data is sent to one or more remote locations.</p>
<p>After you start commitment control, you can use the Change Commitment Options
(QTNCHGCO) API to change the OK to leave out option to Y (Yes). You might
want to do this if one or more remote systems often are not involved in a
transaction.</p>
<p>If your commitment definition is set up to indicate OK to leave out, the
application waits for the next message flow from another location.</p>
<p>The OK to leave out option is intended for applications that are client/server
in nature. If the only purpose of program A is to satisfy requests from program
I and not to do any independent work, then it is appropriate to allow the
OK to leave out option for program A.</p>
<div class="section" xml:lang="en-us" id="rzakjokleaveout__flowcommitprocagenptimizwhenagentvotes"><a name="rzakjokleaveout__flowcommitprocagenptimizwhenagentvotes"><!-- --></a><h4 class="sectiontitle">Flow
of commit processing without last agent optimization when agent votes OK to
leave out</h4><p>The following figure shows the flow of messages among
the application programs and the transaction managers when an application
program issues a commit instruction without last agent optimization when the
agent indicates OK to leave out. Both the initiator application program and
the agent application programs are unaware of the two-phase commit processing.
The numbers in parentheses () in the figure correspond to the numbered items
in the description that follows.</p>
<br /><img src="rzakj514.gif" alt="Flow of commit processing without last agent optimization when agent votes OK to leave out" /><br /><p>Here is a description of
the events for normal processing without last agent optimization when the
agent votes OK to leave out. This describes a basic flow. The sequence of
events can become much more complex when the transaction program network has
multiple levels or when errors occur.</p>
<ol><li>Application program A does a receive request to indicate that it is ready
to receive a request from program I.</li>
<li>The initiator application (I) issues a commit instruction.</li>
<li>The transaction manager for the initiator (TM-I) takes the role of initiator
for this transaction. It starts the prepare wave by sending a prepare message
to all the other locations that are participating in the transaction.</li>
<li>The transaction managers for every other location take the role of agent
(TM-A). The application program A is notified by TM-A that a request to commit
has been received. For ICF files, the notification is in the form of the Receive
Take Commit (RCVTKCMT) ICF indicator being set on.</li>
<li>The application program A responds by issuing a commit instruction (or
a rollback instruction). This is the application program's vote.</li>
<li>If application program A has used the Change Commitment Options API (QTNCHGCO)
to set the OK to leave out commitment option to Y, an indicator is sent when
the agent (TM-A) responds to the initiator (TM-I) with a request commit message.<div class="note"><span class="notetitle">Note:</span> Any
change to the OK to leave out commitment option does not take effect until
the next successful commit operation.</div>
</li>
<li>When the initiator (TM-I) receives all the votes, the TM-I sends a commit
message. This starts the committed wave.</li>
<li>Each agent (TM-A) commits and responds with a reset message.</li>
<li>A return is sent to the application program (I) to indicate that the transaction
is complete at the initiator.</li>
<li>Any number of transactions might occur on TM-I, none of which requires
changes to TM-A or data from TM-A. TM-A is not included in these transactions.</li>
<li>The next time the initiator (TM-I) issues a message to the agent (A),
a new transaction ID is sent with the message. If the initiator performs any
commit or rollback operations before sending a message to the agent, no messages
are sent to the agent during those operations (the agent is 'left out' of
those commits or rollbacks). Because one or more transactions might have been
committed or rolled back at the initiator while the agent was left out, the
initiator must communicate its current transaction ID when the next message
is sent to the agent.</li>
<li>A return is sent to the application program (A) to indicate that the original
commit is complete and that it is participating in the current transaction.</li>
</ol>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzakjcommitdefs_tp.htm" title="After you start commitment control, you can use the Change Commitment Options (QTNCHGCO) API to change the commitment options for your transaction.">Commitment definitions for two-phase commitment control</a></div>
</div>
<div class="relconcepts"><strong>Related concepts</strong><br />
<div><a href="rzakjoptimize.htm" title="Using commitment control requires resources that can affect system performance. Several factors affect system performance regarding commitment control.">Optimize performance for commitment control</a></div>
</div>
</div>
</body>
</html>