Support Article
File listener indicates failure on recovery
SA-26828
Summary
The below mentioned error repeatedly occurs when processing files for recovery using a File listener.
Error Messages
2016-07-20 03:16:55,847 [.PRPCWorkManager : 0] [ STANDARD] [ PegaRULES:07.10] ( services.file.FileListener) ERROR File.your_listener|recover your_recovery_name - Recovery aborted for file [your_filename.your_uniqueid.your_file_extension]
com.pega.pegarules.pub.PRException: Expected exactly one instance for [your_uniqueid], found 0.
From: (application_requestor:your_service_package)
at com.pega.pegarules.integration.engine.internal.services.file.LogServiceFile.lockAndLoad(LogServiceFile.java:315)
at com.pega.pegarules.integration.engine.internal.services.file.LogServiceFile.lockAndLoad(LogServiceFile.java:262)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.needsRecovery(FileListener.java:1380)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.recoverOne(FileListener.java:1454)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.recovery(FileListener.java:1728)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.run_(FileListener.java:1900)
at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:453)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.processAsyncTask(AsyncServant.java:213)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.invoke(AsyncServant.java:167)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._invokeEngine_privact(EngineImpl.java:315)
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:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:338)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:379)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:216)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingException(AppServerBridgeToPega.java:238)
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:155)
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:270)
at java.security.AccessController.doPrivileged(AccessController.java:277)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:796)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:206)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1865)
Steps to Reproduce
Not Applicable
Root Cause
A defect or configuration issue in the operating environment.
In this environment, there are a set of files in the File Listener directory used for recovery that have no corresponding entry in LOG-SERVICE-FILE.
Normal processing cannot account for this. Either the files were copied from another location or the LOG-SERVICE-FILE entries were removed from the pr_log table.
Resolution
Remove the files from the File Listener working directory, or rename them and copy them to the File Listener input directory to be reprocessed.
This way when these files are processed again, entries in LOG-SERVICE-FILE will be created allowing recovery on files that are not processed successfully.
Published August 22, 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.