Support Article
Asynchronous Data Page loads is lost in race conditions
SA-19130
Summary
When a rapid sequence of "load/free/load/free" of the same Data page, using the Load-DataPage method is performed, sometimes a particular load request is lost because of race conditions, and the page is never loaded.
Error Messages
Not Applicable.
Steps to Reproduce
1. Create a scenario in which the same data page is rapidly loaded asynchronously.
2. Unload via the Load-DataPage > connect-wait sequence.
If the sequence of load or remove is fast enough, sometimes a load request is lost and the page does not load.
Root Cause
A defect in Pegasystems’ code or rules. A child Requestor is used for the asynchronous load, and the child Requestor is returned to the Requestor pool after the load completes. If the race condition is just right, the following scenarios might occur:
- Load request 1
- Get child requestor from the pool
- Queue up load request 1
- Load the page by means of the child requestor
- Remove the page
- Load request 2
- Use (the same) child requestor since it is already attached to the main Requestor
- Queue up the load request using this child requestor
- Load request 1 (continued)
- Return the child requestor to the pool (even though it is now assigned to load the page for Request 2) [ERROR]
- Load request 2 (continued)
- Wait forever for the load which will not happen because the child requestor was returned to the pool as the concluding action of Load Request 1
Resolution
Apply HFix-25509.
Published February 9, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.