BPEL instance recovery is not picking up all eligible messages (Doc ID 2158084.1)

Last updated on JULY 07, 2016

Applies to:

Oracle SOA Suite - Version 11.1.1.6.0 to 11.1.1.7.8 [Release 11gR1]
Information in this document applies to any platform.

Symptoms

BPEL Auto-Recovery is not working as expected after enabling recurring recovery.

The SQL which represent undelivered messages (state=0) shows a large count:

 

- Invoke messages with recover count < 3

Select COUNT(MESSAGE_GUID), COMPOSITE_NAME from DLV_MESSAGE where state =0 AND DLV_TYPE = 1 AND recover_count > 3 AND RECEIVE_DATE < (SYSDATE- INTERVAL '30' MINUTE) GROUP BY COMPOSITE_NAME

 

- Invoke messages with recover count > 3
Select COUNT(MESSAGE_GUID), COMPOSITE_NAME from DLV_MESSAGE where state =0 AND DLV_TYPE = 1 AND recover_count < 3 AND RECEIVE_DATE < (SYSDATE- INTERVAL '30' MINUTE) GROUP BY COMPOSITE_NAME

 

- Callback messages with recover count < 3

Select COUNT(MESSAGE_GUID), COMPOSITE_NAME from DLV_MESSAGE where state =0 AND DLV_TYPE = 2 AND recover_count < 3 AND RECEIVE_DATE < (SYSDATE- INTERVAL '30' MINUTE) GROUP BY COMPOSITE_NAME

 

- Recoverable Activity messages

SELECT COUNT (*) , CI.COMPOSITE_NAME FROM WORK_ITEM WI, CUBE_INSTANCE CI WHERE CI.CIKEY = WI.CIKEY AND CI.STATE <= 3 AND WI.STATE = 1 AND WI.EXP_DATE IS NULL AND WI.EXP_FLAG = 0 AND WI.EXECUTION_TYPE != 1 AND WI.MODIFY_DATE < (SYSDATE- INTERVAL '30' MINUTE) AND WI.EXT_INT1 < 3 GROUP BY CI.COMPOSITE_NAME

 

- Recoverable expirable count

SELECT COUNT(*) ,COMPOSITE_NAME FROM WI_EXPIRABLE WHERE EXP_DATE < (SYSDATE- INTERVAL '30' MINUTE) GROUP BY COMPOSITE_NAME

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms