Configuring applications for resiliency

Client applications that use the HBRRULE API to call the zRule Execution Server for z/OS wait indefinitely for the server to respond. This might not be ideal in failure scenarios, so you can set the HBRTIMEOUT parameter so that the client does not wait for a server that never responds.

About this task

The HBRTIMEOUT runtime variable specifies the number of seconds to wait for a response. If the zRule Execution Server for z/OS takes longer than the HBRTIMEOUT value to respond to the client, the client receives a completion code of 8 and a reason code of 3034 (HBR_RC_RULE_TIMEOUT).

The client application can attempt the rule execution again on a backup zRule Execution Server for z/OS, specified on the HBRSSIDLIST, by issuing the HBRRULE API call again with the same HBRA-CONN-AREA. The zRule Execution Server for z/OS that timed out is ignored for this and all future HBRRULE calls until a HBRDISC and HBRCONN are issued.

If all of the zRule Execution Server for z/OS in the HBRSSIDLIST either time out or are unavailable, the client application receives a completion code of 8 and a reason code of 3022 (HBR_RC_NO_SERVER_AVAILABLE). The client application must issue the HBRDISC and HBRCONN API calls to attempt further rule executions on the servers in the HBRSSIDLIST.

Although the server continues to run the rule even after the client times out, a record can be made of this execution in the server log by setting the property HBRLOGTIMEOUTS to YES (see Configuring properties to monitor for excessive execution time).

Procedure

  1. Locate the HBRTIMEOUT property value.
    For batch, see the ++HBRWORKDS++.SHBRPARM(HBRBATCH) member. For CICS®, see the ++HBRWORKDS++.SHBRPARM(HBRCICSZ) member.
  2. Specify the number of seconds to wait for a response from the zRule Execution Server for z/OS stand alone, where 0 means no timeout and 1 to 60000 expresses the number of seconds to wait for rule execution to complete.