Designing the CCTL recovery process
You should consider CCTL operations and installation requirements when designing your CCTL. For example, a CCTL might have a means of allowing its own shutdown, but CCTL threads or BMPs should not have long-running UORs.
Under the conditions of a nonrecoverable z/OS® abend, a DRA TERM request lets all threads collapse and U0113 is possible. To reduce the number of nonrecoverable abends of the CCTL, IMS DB intercepts any operator CANCEL of a CCTL that is connected to IMS DB, and converts it to a S08E recoverable abend of the CCTL. If you want a CANCEL to be converted to an S08E abend, you must specify CCTCVCAN=Y on IMS startup parameters.
You can also as a last resort, force a CCTL to shut down. If an operator enters a FORCE command after CANCEL has been entered (and converted to S08E), IMS DB converts FORCE into a z/OS cancel command. Subsequent FORCE attempts are not intercepted by IMS DB. In these cases of nonrecoverable abends, a U0113 is possible.
A CCTL might have a means of allowing its own shutdown. The CCTL shutdown logic should issue a DRA TERM request and wait for the request completion to prevent a U0113 abend in IMS DB. The DRA TERM request waits for current thread requests to complete. One thing that can prevent a current thread DL/I call from completing normally is if the call has to wait in IMS DB for a database segment to become available. The reason the segment might not be available is that it is held by another UOR, either in a thread belonging to another CCTL or in an IMS dependent region (for example, a BMP). The solution is to not have CCTL threads or BMPs that have long-running UORs.
No matter how you choose to prevent or discourage long-running CCTL threads, you must decide how long to wait for the DRA TERM request to complete (TIMEOUT). In most cases, it is undesirable to get a U113 abend in IMS DB during a CCTL termination, so the timeout value should be greater than the longest possible UOR. If the CCTL has a means of limiting the UOR time or allowing the installation to specify this time limit, the DRA TERM timeout value can be determined. This timeout value can be specified in the DRA startup table and is returned to the CCTL in the INIT PAPL.
CCTL Operations Recommendation:
- Avoid using CANCEL or FORCE commands against CCTL regions that are connected to IMS DB.
CCTL Design Recommendations:
- The CCTL should issue a DRA TERM request during recoverable abend processing.
- CCTL shutdown functions should issue a DRA TERM request.
- Whenever a DRA TERM request is issued, wait for it to complete. If this time must have an upper limit, use the TIMEOUT value specified in the DRA startup table.
- The CCTL should prevent long-running UORs in its threads using IMS DB.
User Installation Recommendations:
- Have BMPs take frequent checkpoints.
- Limit long-running UOR applications.
- Set the TIMEOUT startup parameter as high as possible, preferably longer than the longest running UOR.