|
Following our analysis of the recent failures , we have identified the root cause and implemented a corrective solution. Please find the details below.
Root Cause
The issue was caused by a concurrency behavior related to Flowable’s asynchronous execution. Specifically, the use of completeAsync="true" on the Feasibility Acceptance subprocess could, under certain conditions, allow the subprocess to start before the parent execution was fully committed in the database, resulting in an Oracle integrity constraint violation (ORA-02291).
Non-Deterministic Behavior
This behavior is non-deterministic and does not occur for all process instances. It typically manifests under high server load or when multiple process instances are executed in parallel, depending on thread scheduling and transaction timing.
Solution Implemented
In the new version of the process, we have removed completeAsync="true" from the Feasibility Acceptance subprocess. This change ensures that the subprocess starts only after all parent executions and preceding call activities have been fully completed, thereby preventing the ORA-02291 error.
All other call activities remain asynchronous in order to maintain optimal performance.
For the production-related request, we performed a “Start Over”, and the requests completed successfully following the happy path without uploading the new BPMN.
Since this issue occurs only under load conditions, we kindly recommend deploying the updated process to the staging environment and conducting a stress test. While the fix is theoretically sound, this additional validation will help confirm the stability and robustness of the solution.
|