Support Article
File Listener failing in a multi-node environment
SA-3326
Summary
User has configured File Listener to monitor and process files from UNIX NFS mount. This File Listener is running on multi-nodes crashes quite frequently and requires manual restart.
Error Messages
2014-09-18 10:10:16,045 [node02,maxpri=10]] [ STANDARD] [ ] ( services.file.FileListener) ERROR File.BulkUploadFile [email protected] - Unexpected exception caught during processing.
java.lang.Exception: [/transfer/files/inbound] exists, but it is not a directory.
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.initialize(FileListener.java:1829)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.run_(FileListener.java:1899)
at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:445)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.processAsyncTask(AsyncServant.java:186)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.invoke(AsyncServant.java:151)
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:266)
at com.pega.pegarules.session.internal.engineinterface.etier.ejb.EngineBean.invokeEngine(EngineBean.java:239)
at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:619)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:348)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:389)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingException(PRBootstrap.java:411)
at com.pega.pegarules.internal.etier.ejb.EngineBeanBoot.invokeEngine(EngineBeanBoot.java:171)
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:154)
at com.pega.pegarules.session.internal.engineinterface.etier.asynchbeans.AsyncTask.run(AsyncTask.java:63)
at com.pega.pegarules.session.internal.engineinterface.etier.asynchbeans.RunnableWrapper.run(RunnableWrapper.java:70)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:261)
at java.security.AccessController.doPrivileged(AccessController.java:297)
at javax.security.auth.Subject.doAs(Subject.java:495)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:118)
at com.ibm.ws.asynchbeans.J2EEContext$DoAsProxy.run(J2EEContext.java:328)
at java.security.AccessController.doPrivileged(AccessController.java:326)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:757)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:218)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:158)
at java.lang.Thread.run(Thread.java:813)
Root Cause
File Listener polling interval in PRPC by default has been set as 60 seconds which may not be suitable for multi-node environment. When the File Listener is up and running, each time, configured Polling interval lapses, it checks the folder location for files to process. If it finds any file(s), it picks them up for processing. Lower polling interval caused the breaking of threads resulting File Listener crash in multi-node environment.
Resolution
Suggested user to increase the File Listener polling interval to a higher value (say 900 seconds) suitable to the File Listener processing on a multi-node environment.
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.