Integration Server 10.3 | Publish-Subscribe Developer’s Guide | Transient Error Handling During Trigger Preprocessing | Overview of Transient Error Handling During Trigger Preprocessing
 
Overview of Transient Error Handling During Trigger Preprocessing
Following is an overview of how Integration Server performs transient error handling for an ISRuntimeException that occurs during trigger preprocessing. Typically, transient errors that occur during preprocessing occur during exactly-once processing. For example, the document history database might not be available of the document resolver service fails because of an ISRuntimeException.
Step
Description
1
A transient error, specifically an ISRuntimeException, occurs during the preprocessing phase of trigger execution.
2
Integration Server checks the values of watt.server.trigger.preprocess.suspendAndRetryOnError server configuration property and the On Retry Failure trigger property. If this is a transacted JMS trigger, Integration Serverchecks the value of the On Transaction Rollback property instead of the On Retry Failure property.
If one of the following is true, Integration Server suspends the trigger, rolls the message back to the messaging provider, and proceeds as described in step 3:
*watt.server.trigger.preprocess.suspendAndRetryOnError is set to true.
*On Retry Failure property is set to Suspend and retry later or On Transaction Rollback property is set to Suspend and recover.
If none of the above are true, then Integration Server does not suspend the trigger if a transient error occurs during trigger preprocessing. Instead, Integration Server does one of the following:
*If the trigger specifies a document resolver service, Integration Server executes the document resolver service to determine the status of the document. If the document resolver service ends because of an ISRuntimeException, Integration Server assigns the document a status of In Doubt, acknowledges the document, and uses the audit subsystem to log the document.
*If the trigger does not specify a document resolver service, Integration Server assigns the document a status of In Doubt. Integration Server throws an exception, acknowledges the document to the messaging provider, and uses the audit subsystem to log the document. This may result in message loss.
Note:
If the trigger is a webMethods messaging trigger, Integration Server uses the audit subsystem to log the document. You can use webMethods Monitor to resubmit the document.
3
Integration Server does one of the following once the trigger is suspended:
*If the transient error (ISRuntimeException) is caused by a SQLException (which indicates that an error occurred while reading to or writing from the database), Integration Server suspends the trigger and schedules a system task that executes an internal service that monitors the connection to the document history database. Integration Server resumes the trigger and re-executes it when the internal service indicates that the connection to the document history database is available.
*If the transient error (ISRuntimeException) is caused by a ConnectionException (which indicates that document history database is not enabled or is not properly configured), and the watt.server.trigger.preprocess.monitorDatabaseOnConnectionException property is set to true, Integration Server schedules a system task that executes an internal service that monitors the connection to the document history database. Integration Server resumes the trigger and re-executes it when the internal service indicates that the connection to the document history database is available.
*If the transient error (ISRuntimeException) is caused by a ConnectionException and the watt.server.trigger.preprocess.monitorDatabaseOnConnectionException property is set to false, Integration Server does not schedule a system task to check for the database's availability and will not resume the trigger automatically. You must manually resume the trigger after configuring the document history database properly.
*If the transient error (ISRuntimeException) is caused by some other type of exception, Integration Server suspends the trigger and schedules a system task to execute the trigger's resource monitoring service (if one is specified). When the resource monitoring service indicates that the resources used by the trigger are available, Integration Server resumes the trigger and again receives the message from the messaging provider. If a resource monitoring service is not specified, you will need to resume the trigger manually (via Integration Server Administrator or the pub.trigger* services).