java.lang.InterruptedException: Requestor has been destroyed or recycled

We are receiving below exception in the log files. Can someone provide more details on probable cause?

[30.128.254.78: com.pega.pegarules.pub.context.RequestorLockException][STACK][com.pega.pegarules.pub.context.RequestorLockException: PRRuntimeException at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1143) at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:994) at com.pega.pegarules.session.external.engineinterface.service.EngineAPI.processRequest(EngineAPI.java:368) at com.pega.pegarules.session.internal.engineinterface.service.HttpAPI.invoke(HttpAPI.java:920) at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._invokeEngine_privact(EngineImpl.java:338) at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl.invokeEngine(EngineImpl.java:282) at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl.invokeEngine(EngineImpl.java:259) at com.pega.pegarules.priv.context.JNDIEnvironment.invokeEngineInner(JNDIEnvironment.java:281) at com.pega.pegarules.priv.context.JNDIEnvironment.invokeEngine(JNDIEnvironment.java:226) at com.pega.pegarules.web.impl.WebStandardImpl.makeEtierRequest(WebStandardImpl.java:767) at com.pega.pegarules.web.impl.WebStandardImpl.doPost(WebStandardImpl.java:423) at sun.reflect.GeneratedMethodAccessor251.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:385) at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:427) at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:225) at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethod(AppServerBridgeToPega.java:274) at com.pega.pegarules.internal.web.servlet.WebStandardBoot.doPost(WebStandardBoot.java:146) at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) at com.pega.pegarules.internal.web.servlet.WebStandardBoot.service(WebStandardBoot.java:172) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:666) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:182) at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.InterruptedException: Requestor has been destroyed or recycled at com.pega.pegarules.session.internal.mgmt.PRRequestorImpl.lockAttempt(PRRequestorImpl.java:1131) at com.pega.pegarules.session.internal.PRSessionProviderImpl.getLockOnRequestor(PRSessionProviderImpl.java:1505) at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1126) … 45 more]*

@DixitGoyal

Do you have any context information? Do you know how to replicate this behaviour or is it just a message you having on your log without knowing anything else about it?

@MarcLasserre_GCS it is just a message having on our logs with Exception EXCP0001.

@DixitGoyal

Right. I think you should look into other issues before this one to get a bit more details on context.

@DixitGoyal Hi Dixit,

Did you get any resolution on this issue. We are also facing the same issue in our pega version 8.4.4.

@HarishR7728 EndSession activity was getting triggered to END the session which was destroying the requestor.

@DixitGoyalHi Dixit,

Which version of Pega you faced the issue with ? And did you see this issue on Logout ?

We are currently using Pega 8.4.4 and we don’t have any customizations on logout. CPMLogoff and Logoff are the OOTB rules which are getting called when we logoff

In Code-Security.Logoff Activity, we have step 10 where Endsession is being called. Is it the same place where you see the EndSession activity ? and what changes you made to overcome this

can you please explain

@DixitGoyal
Okay.

And Dixit, Is there any way we can reproduce the issue. Because this issue is not happening after every logoff for us

If we can reproduce this and find the steps and point out EndSession Activity is causing issue, then we can apply the same fix as you did :slight_smile:

@HarishR7728 For replication, Open multiple threads for the same session and do log off with keeping threads open. Hope it will help.

@HarishR7728 We have customized logoff activity. Yes, Endsession is being called in Code-Security.Logoff Activity.

@DixitGoyal

I will try this out Dixit and will let you know. Thanks for your valuable Inputs.

And also what customization you did? Did you commented out that step or anything more ?

@HarishR7728, you may want to review the following:

https://community.pega.com/support/support-articles/interruptedexception-requestor-has-been-destroyed-or-recycled

@MMIchalski Hi ,

Thanks for sharing the Post :slight_smile:

How can we say that “Data in the log file indicated that the database PARENT and CHILD Save operations failed.”

Is it indicated in the logs anywhere in the exception?

@HarishR7728 We commented out the step which was calling activity Code-Security.EndSession.