Support Article
ASYNCDECLARATIVEPOOL Timeouts occurring
SA-5693
Summary
Timeouts are occurring for the ASYNCDECLARATIVEPOOL requestor pool. The active count is equal to the max active. In Pega 7.1.4 the service package for this requestor isn't shown in the list of service packages and therefore cannot be increased or amended. We need advice on the correct course of action. We need to understand whether a problem is causing a high number of requestors or whether we just need to increase the pool size and if so how.
Error Messages
2014-12-05 05:15:16,137 [7.1.4_FRW,maxpri=10]] [ STANDARD] [ ] [ ] ( internal.mgmt.RequestorPool) ERROR - Timed out borrowing service requestor from requestor pool for service package: ASYNCDECLARATIVEPOOL
2014-12-05 05:15:16,137 [7.1.4_FRW,maxpri=10]] [ STANDARD] [ ] [ ] ( internal.mgmt.PREnvironment) ERROR - Problem obtaining requestor from ServiceRequestorPool
com.pega.pegarules.pub.PRException: Timed out borrowing service requestor from requestor pool for service package: ASYNCDECLARATIVEPOOL
From: (unknown)
at com.pega.pegarules.session.internal.mgmt.RequestorPool.borrowRequestor(RequestorPool.java:476)
at com.pega.pegarules.session.internal.mgmt.RequestorPoolManager.borrowRequestor(RequestorPoolManager.java:74)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.borrowRequestor(PRSessionProviderImpl.java:607)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.borrowRequestor(PRSessionProviderImpl.java:631)
at com.pega.pegarules.exec.internal.async.AsyncServiceBatchTask.getRequestorAndThread(AsyncServiceBatchTask.java:465)
at com.pega.pegarules.exec.internal.async.AsyncServiceBatchTask.run(AsyncServiceBatchTask.java:252)
at com.pega.pegarules.session.internal.async.Agent.runBatchTask(Agent.java:784)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.processAsyncTask(AsyncServant.java:198)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.invoke(AsyncServant.java:152)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._invokeEngine_privact(EngineImpl.java:312)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl.invokeEngine(EngineImpl.java:263)
at com.pega.pegarules.session.internal.engineinterface.etier.ejb.EngineBean.invokeEngine(EngineBean.java:225)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:419)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:460)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingException(PRBootstrap.java:482)
at com.pega.pegarules.internal.etier.ejb.EngineBeanBoot.invokeEngine(EngineBeanBoot.java:168)
at com.pega.pegarules.internal.etier.interfaces.EJSLocalStatelessEngineBMT_f2439d86.invokeEngine(Unknown Source)
at com.pega.pegarules.session.internal.engineinterface.etier.mdb.PRAsync.processRequest(PRAsync.java:153)
at com.pega.pegarules.session.internal.engineinterface.etier.asynchbeans.AsyncTask.run(AsyncTask.java:64)
at com.pega.pegarules.session.internal.engineinterface.etier.asynchbeans.RunnableWrapper.run(RunnableWrapper.java:71)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:268)
at java.security.AccessController.doPrivileged(AccessController.java:228)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:768)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:159)
at java.lang.Thread.run(Thread.java:738)
Caused by:
java.util.NoSuchElementException: Timeout waiting for idle object
at com.pega.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:751)
at com.pega.pegarules.session.internal.mgmt.RequestorPool.borrowRequestor(RequestorPool.java:463)
... 29 more
Steps to Reproduce
Not Applicable
Root Cause
The root cause of this problem is a defect in Pegasystems’ code/rules in Pega 7.1.4.
Resolution
The explanation for this behaviour is as follows:
In Pega 7.1.4 the Service Package for this requestor pool isn't shown in the list of service packages and therefore cannot be opened and amended. The Service Package ASYNCDECLARATIVEPOOL was omitted from the Pega 7.1.4. release which is why it cannot be located. This omission has been corrected in Pega 7.1.5. and later releases via BUG-143220. An issue where the pool will occasionally be fully utilised and the requestors not released has also been addressed in Pega 7.1.5. and later releases via BUG-145349.
Query: We need advice on the correct course of action. We need to understand whether a problem is causing a high number of requestors or whether we just need to increase the pool size and if so how.
Response: You can add a Service Package ASYNCDECLARATIVEPOOL instance to your system and then use this to amend the Requestor values in the pool to help manage the pool behaviour.
The pool requestor sizes can be then tuned according to the immediate need of the system by updating the Service Package. Refer to the following PDN article for further detail regarding the configuration of the pool:
https://pdn.pega.com/data-management/how-to-configure-a-non-blocking-ui-using-asynchronous-declare-pages
Of particular importance / relevance are the following sections:
· System Administrators: Tuning the Requestor Pool
· Modify requestor pool settings
The pool should be monitored via SMA and the pool cleared if it becomes full by using the SMA > Administration > RequestorPools menu option.
Published January 31, 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.