Support Article
FileListener cannot fetch source location after server restart
SA-75194
Summary
An AWS S3 Repository path is configured as the source location of a file listener. After every server restart, the FileListener aborts with an IllegalArgumentException in the logs. After resaving the Repository rule and executing Test Connectivity on it, the FileListener can be started manually and works correctly until the next server restart.
Error Messages
[fault (self-tuning)'] [STANDARD] [ ] [AoM:01.01.01] (services.file.FileListener) ERROR File.GetBatchFile ServiceUser - Unexpected exception caught during processing.
java.lang.IllegalArgumentException: Illegal characters detected in the path "repo_AWSS3:/folder/". You may not use ", ?, *, <, >, |, :
at com.pega.pegarules.priv.storage.StorageUtils.normalizeRelativePath(StorageUtils.java:233) ~[prpublic.jar:?]
at com.pega.pegarules.storage.FileStorageManager.getFile(FileStorageManager.java:474) ~[prprivcommon.jar:?]
at com.pega.pegarules.storage.PrivilegedFileStorageManager.getFile(PrivilegedFileStorageManager.java:71) ~[prprivcommon.jar:?]
at com.pega.pegarules.storage.PrivilegedFileStorageManager.getFile(PrivilegedFileStorageManager.java:90) ~[prprivcommon.jar:?]
at com.pega.pegarules.integration.engine.internal.services.file.FileActionImpl.initialize(FileActionImpl.java:155) ~[printegrint.jar:?]
at
com.pega.pegarules.integration.engine.internal.services.file.FileActionImpl.<init>(FileActionImpl.java:123) ~[printegrint.jar:?]
at
com.pega.pegarules.integration.engine.internal.services.file.FileListener.run_(FileListener.java:441) ~[printegrint.jar:?]
at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:454) ~[printegrint.jar:?]
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.processAsyncTask(AsyncServant.java:217) ~[prprivate.jar:?]
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.invoke(AsyncServant.java:171) ~[prprivate.jar:?]
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._invokeEngine_privact(EngineImpl.java:331) ~[prprivate.jar:?]
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl.invokeEngine(EngineImpl.java:274) ~[prprivate.jar:?]
at com.pega.pegarules.session.internal.engineinterface.etier.ejb.EngineBean.invokeEngine(EngineBean.java:225) ~[prprivate.jar:?]
at sun.reflect.GeneratedMethodAccessor145.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:370) ~[prbootstrap-7.3.1-218.jar:7.3.1-218]
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:411) ~[prbootstrap-7.3.1-218.jar:7.3.1-218]
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:224) ~[prbootstrap-api-7.3.1-218.jar:7.3.1-218]
at
.
.
.
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:670) ~[com.bea.core.weblogic.workmanager.jar:12.2.1.3]
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352) ~[com.bea.core.utils.full.jar:12.2.1.3]
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337) ~[com.bea.core.utils.full.jar:12.2.1.3]
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57) ~[com.oracle.weblogic.work.jar:12.2.1.3]
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41) ~[com.bea.core.weblogic.workmanager.jar:12.2.1.3]
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644) ~[com.bea.core.weblogic.workmanager.jar:12.2.1.3]
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:415) ~[com.bea.core.weblogic.workmanager.jar:12.2.1.3]
at weblogic.work.ExecuteThread.run(ExecuteThread.java:355) ~[com.bea.core.weblogic.workmanager.jar:12.2.1.3]
Steps to Reproduce
- Create an AWS S3 Repository rule.
- Create a file listener and refer the AWS S3 bucket path source location (file://repo_AWSS3:/folder). Perform Test Connectivity (success).
- Restart the server.
- Open the listener rule and perform Test Connectivity(fail).
Root Cause
A software use or operation error.
The configuration of a Repository record as an input location for a FileListener does not work for versions prior to Pega 7.4.
Resolution
Perform the following local-change:
Follow the instructions provided in the below link to configure the file listener associated with a storage destination.
Refer to: https://community.pega.com/knowledgebase/articles/configure-file-listener-associated-storage-destination
Published March 21, 2019 - 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.