Question
com.pega.pegarules.pub.context.StaleThreadError: Thread has been recycled
Hi Team,
Recently we have upgraded our Pega platform from V7.2.2 to V8.4.1 and post upgrade, we are observing below exception in the logs. can you please help us to understand on which scenario this exception occurs and how can we resolve that?
[on-delegator-pool-13] [ STANDARD] [ ] [ ] ( mgmt.base.ThreadData) ERROR - Trying to use a recycled thread com.pega.pegarules.pub.context.StaleThreadError: Thread has been recycled at com.pega.pegarules.session.internal.mgmt.base.ThreadData.validateUse(ThreadData.java:840) ~[prprivate-session.jar:?] at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.validateUse(PRThreadImpl.java:193) ~[prprivate-session.jar:?] at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.getDatabase(PRThreadImpl.java:345) ~[prprivate-session.jar:?] at com.pega.pegarules.data.internal.sqlapi.resolve.NativeSQLAPIResolver.resolveDBRelatedInfo(NativeSQLAPIResolver.java:1052) ~[prprivate-data.jar:?] at com.pega.pegarules.data.internal.sqlapi.resolve.NativeSQLAPIResolver.resolve(NativeSQLAPIResolver.java:120) ~[prprivate-data.jar:?] at com.pega.dsm.dnode.util.NativeSQLBatchReader.<init>(NativeSQLBatchReader.java:94) ~[d-node.jar:?] at com.pega.dsm.dnode.util.NativeSQLBatchReader.<init>(NativeSQLBatchReader.java:98) ~[d-node.jar:?] at com.pega.dsm.dnode.util.NativeSQLBatchReader.<init>(NativeSQLBatchReader.java:102) ~[d-node.jar:?] at com.pega.dsm.dnode.impl.dataflow.service.persistence.db.PersistenceDbUtils$1.emit(PersistenceDbUtils.java:239) ~[d-node.jar:?] at com.pega.dsm.dnode.impl.stream.DataObservableImpl$SafeDataSubscriber.subscribe(DataObservableImpl.java:353) ~[d-node.jar:?] at com.pega.dsm.dnode.impl.stream.DataObservableImpl.subscribe(DataObservableImpl.java:55) ~[d-node.jar:?] at com.pega.dsm.dnode.impl.stream.DataObservableImpl.await(DataObservableImpl.java:117) ~[d-node.jar:?] at com.pega.dsm.dnode.impl.stream.DataObservableImpl.await(DataObservableImpl.java:106) ~[d-node.jar:?] at com.pega.dsm.dnode.impl.dataflow.asyncexecutor.QueueProcessorDataSetOperationsImpl.getLag(QueueProcessorDataSetOperationsImpl.java:307) ~[d-node.jar:?] at com.pega.platform.executor.queueprocessor.internal.QueueProcessorManagementOperationsImpl$LagCalculator.execute(QueueProcessorManagementOperationsImpl.java:323) ~[pega-executor.jar:?] at com.pega.platform.executor.queueprocessor.internal.BatchTask.lambda$executeInBorrowedRequestor$0(BatchTask.java:80) ~[pega-executor.jar:?] at com.pega.platform.executor.queueprocessor.internal.BatchTask$$Lambda$2091.0000000020DCAFC0.run(Unknown Source) ~[?:?] at com.pega.pegarules.session.internal.PRSessionProviderImpl.performTargetActionWithLock(PRSessionProviderImpl.java:1397) ~[prprivate-session.jar:?] at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1140) ~[prprivate-session.jar:?] at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1021) ~[prprivate-session.jar:?] at com.pega.pegarules.session.internal.PRSessionProviderImplForModules.doWithRequestorLocked(PRSessionProviderImplForModules.java:71) ~[prprivate-session.jar:?] at com.pega.platform.executor.queueprocessor.internal.BatchTask.executeInBorrowedRequestor(BatchTask.java:76) ~[pega-executor.jar:?] at com.pega.platform.executor.queueprocessor.internal.BatchTask.run(BatchTask.java:47) ~[pega-executor.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:522) ~[?:1.8.0] at java.util.concurrent.FutureTask.run(FutureTask.java:277) ~[?:1.8.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160) [?:1.8.0] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:1.8.0] at java.lang.Thread.run(Thread.java:818) [?:2.9 (11-06-2019)]
Could you check exactly when this error occurs ? This could be because of the activity performed by the thread takes more time to complete/timed out.