Determining When a Sever Requires a Rollback
- If your partner severs:
- If IPWHATRC=IPSABEND and IPCODE=X'01xx:X', this is an allocation error. A rollback is not required.
- If you issue an APPC/VM function that completes with IPWHATRC=IPBACK, then a rollback is required.
- If you issue an APPC/VM function that initially completes with CC=0 and subsequently completes with a function complete interrupt with IPWHATRC=IPSABEND or IPSNORM, then a rollback is required.
- If you issued an APPC/VM function while disabled for
external interrupts and the function completes immediately (CC=2)
with IPWHATRC=IPSABEND or IPSNORM, then (while still disabled):
- APPCVM RECEIVE any log data
- Set up an APPC/VM Sever or IUCV SEVER parameter list
- Use CMSIUCV SEVER to sever the path and proceed with 2 below.
- If you issue an APPC/VM function while enabled for external interrupts and the function completes immediately (CC=2) with IPWHATRC=IPSABEND or IPSNORM, then see 3 below to determine whether the work unit requires a rollback.
- If you initiate the sever or if you sever in response to a sever from your partner (see 1.d above), the sever you issued may merely have freed the path ID of a conversation that was severed in the preceding sync point that resulted in a rollback. You can determine if this is the case by checking the APPCVM or IUCV SEVER output parameter list: If the IPFREPTH flag is 0 or the IPURGBKR flag is 1, then a rollback is required. Otherwise, a rollback is not required.
- The only other way to determine if a rollback is required is to query the conversation state (APPCVM QRYSTATE) of some other conversation (if any) that is associated with the same work unit. If IPSTATE=IPBKREQ, the associated work unit requires a rollback.
- If protected conversations are severed due to HNDIUCV CLR, you
can take one of the following actions:
- You can issue a rollback for all of the work units.
- You can terminate and let CMS end-of-command processing roll back all the work units.
- You can determine (as described in 3 above) whether the work unit(s) associated with the conversations must be backed out and then take the appropriate action.
Every APPC/VM protected conversation is associated with a work unit. A program can initiate multiple protected conversations on a work unit, but can accept only one.
Note that you cannot route a SYNCLVL=SYNCPT conversation through the TSAF virtual machine or a CS collection; only AVS machines and APPCVM programs communicating within the same system support protected conversations.