Support Article

StackOverflowError exceptions in file listener processing

SA-39060

Summary



The user upgraded the Production environment from 7.1.8 to 7.2.1. After upgrade from Pega 7.1.8 to 7.2.1 the file listners are failing with StackOverflowError. The Filelistener is working on a csv file with 9607 records.

Error Messages



eg.1 :-
2017-02-21 15:41:26,510 [workmanager_PRPC : 0] [ STANDARD] [ ] ( services.file.FileListener) ERROR File.ABCFileListener|process|ABC5A37C65F88A1D3D9B959EB65DCBC23|1487687836127000 batchprocess@xyz.com - Caught throwable processing file1.csv
java.lang.StackOverflowError
at com.pega.pegarules.session.internal.authorization.context.custom.ManagedApplicationContextImpl.getDefineTimeWrapper(ManagedApplicationContextImpl.java:1017)
.... around 4000 times
at com.pega.pegarules.session.internal.authorization.context.custom.ManagedApplicationContextImpl.getDefineTimeWrapper(ManagedApplicationContextImpl.java:1017)
at com.pega.pegarules.session.internal.authorization.context.custom.ManagedApplicationContextImpl.<init>(ManagedApplicationContextImpl.java:102)
at com.pega.pegarules.session.internal.authorization.context.custom.SnapshotApplicationContextImpl.<init>(SnapshotApplicationContextImpl.java:47)
at com.pega.pegarules.session.internal.authorization.context.custom.ManagedApplicationContextFactory.createSnapshotApplicationContext(ManagedApplicationContextFactory.java:86)
at com.pega.pegarules.session.internal.authorization.context.ApplicationContextFactory.createSnapshotApplicationContext(ApplicationContextFactory.java:141)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.makeStateTransition(SessionAuthorization.java:674)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.addNewAccessGroups(SessionAuthorization.java:1238)
at com.pega.pegarules.data.internal.access.DatabaseImpl.noteOrganizationalChange(DatabaseImpl.java:3676)
at com.pega.pegarules.data.internal.access.DatabaseImpl.noteChange(DatabaseImpl.java:3399)
at com.pega.pegarules.data.internal.access.DatabaseImpl.notifyOtherSystemsAfterUpdates(DatabaseImpl.java:3114)
at com.pega.pegarules.data.internal.access.DatabaseImpl.attemptToProcessUpdates(DatabaseImpl.java:2833)
at com.pega.pegarules.data.internal.access.DatabaseImpl.processUpdates(DatabaseImpl.java:2415)
at com.pega.pegarules.data.internal.access.Saver.save(Saver.java:679)
at com.pega.pegarules.data.internal.access.Saver.save(Saver.java:1908)
at com.pega.pegarules.data.internal.access.DatabaseImpl.save(DatabaseImpl.java:4056)
at com.pega.pegarules.data.internal.access.DatabaseImpl.save(DatabaseImpl.java:4047)
at com.pega.pegarules.session.internal.mgmt.authentication.Authentication.initializeUser(Authentication.java:1979)
at com.pega.pegarules.session.internal.mgmt.authentication.Authentication.initializeUser(Authentication.java:1887)
at com.pega.pegarules.session.internal.mgmt.authentication.Authentication.doAuthentication(Authentication.java:560)
at com.pega.pegarules.integration.engine.internal.MiscServiceUtils.performAuthentication(MiscServiceUtils.java:111)
at com.pega.pegarules.integration.engine.internal.MiscServiceUtils.performAuthentication(MiscServiceUtils.java:145)
at com.pega.pegarules.integration.engine.internal.services.file.RuleServiceFile.parseRecordAtTime(RuleServiceFile.java:1012)
at com.pega.pegarules.integration.engine.internal.services.file.RuleServiceFile.process(RuleServiceFile.java:1756)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.processOne(FileListener.java:1017)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.drainDirectory(FileListener.java:1259)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.run_(FileListener.java:1910)
at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:454)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.processAsyncTask(AsyncServant.java:213)

eg.2 :-
2017-02-20 09:09:20,095 [orkmanager_PRPC : 19] [ STANDARD] [ PegaRULES:07.10] ( services.file.FileListener) ERROR File.ABCFileListener|process|A137B0A72A2D1C821BC16C64AECD698B5|1487577836945000 batchprocess@xyz.com - Caught throwable processing file25.csv
java.lang.StackOverflowError
at com.pega.pegarules.session.internal.authorization.context.custom.ManagedApplicationContextImpl.getApplicationPath(ManagedApplicationContextImpl.java:507)
... around 4000 times
at com.pega.pegarules.session.internal.authorization.context.custom.ManagedApplicationContextImpl.getApplicationPath(ManagedApplicationContextImpl.java:507)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.makeStateTransition(SessionAuthorization.java:645)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.addNewAccessGroups(SessionAuthorization.java:1238)
at com.pega.pegarules.data.internal.access.DatabaseImpl.noteOrganizationalChange(DatabaseImpl.java:3676)
at com.pega.pegarules.data.internal.access.DatabaseImpl.noteChange(DatabaseImpl.java:3399)
at com.pega.pegarules.data.internal.access.DatabaseImpl.notifyOtherSystemsAfterUpdates(DatabaseImpl.java:3114)
at com.pega.pegarules.data.internal.access.DatabaseImpl.attemptToProcessUpdates(DatabaseImpl.java:2833)
at com.pega.pegarules.data.internal.access.DatabaseImpl.processUpdates(DatabaseImpl.java:2415)
at com.pega.pegarules.data.internal.access.Saver.save(Saver.java:679)
at com.pega.pegarules.data.internal.access.Saver.save(Saver.java:1908)
at com.pega.pegarules.data.internal.access.DatabaseImpl.save(DatabaseImpl.java:4056)
at com.pega.pegarules.data.internal.access.DatabaseImpl.save(DatabaseImpl.java:4047)
at com.pega.pegarules.session.internal.mgmt.authentication.Authentication.initializeUser(Authentication.java:1979)
at com.pega.pegarules.session.internal.mgmt.authentication.Authentication.initializeUser(Authentication.java:1887)
at com.pega.pegarules.session.internal.mgmt.authentication.Authentication.doAuthentication(Authentication.java:560)
at com.pega.pegarules.integration.engine.internal.MiscServiceUtils.performAuthentication(MiscServiceUtils.java:111)
at com.pega.pegarules.integration.engine.internal.MiscServiceUtils.performAuthentication(MiscServiceUtils.java:145)
at com.pega.pegarules.integration.engine.internal.services.file.RuleServiceFile.parseRecordAtTime(RuleServiceFile.java:1012)
at com.pega.pegarules.integration.engine.internal.services.file.RuleServiceFile.process(RuleServiceFile.java:1756)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.processOne(FileListener.java:1017)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.drainDirectory(FileListener.java:1259)
at com.pega.pegarules.integration.engine.internal.services.file.FileListener.run_(FileListener.java:1910)
at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:454)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.processAsyncTask(AsyncServant.java:213)


Steps to Reproduce



Run a Filelistener to process file with records in excess of 2000 records.


Root Cause



High Availability configuration in prconfig.xml were enabled on the servers. The issue was caused by setting "Authorization/RSLUpdateBehavior" setting to 'fixedreq'.

Resolution



Remove prconfig setting "Authorization/RSLUpdateBehavior".

Since users are logged out when perfoming rules deployment, it is safe to remove the setting "Authorization/RSLUpdateBehavior
".

Published June 7, 2017 - Updated June 16, 2017

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.