Skip to main content

This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.

Support Article

ConcurrentModificationException in iterating GlobalContextCache

SA-35387

Summary



User requires the HFix 26430 for version Pega 7.1.7 with the backport.


Error Messages



[fault (self-tuning)'] [ ] [ ] [ ] ( services.http.HTTPService) ERROR stage2cpp085|xx.xx.xx.xx - Caught unexpected java.util.ConcurrentModificationException, message='', stacktrace=java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:926)
at java.util.HashMap$KeyIterator.next(HashMap.java:960)
at com.pega.pegarules.session.internal.authorization.context.GlobalContextCache.getBasicApplicationContext(GlobalContextCache.java:495)
at com.pega.pegarules.session.internal.authorization.context.GlobalContextCache.getLocalizedApplicationContext(GlobalContextCache.java:582)
at com.pega.pegarules.session.internal.authorization.context.AuthorizationContextManagerImpl.getContext(AuthorizationContextManagerImpl.java:132)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.getContext(SessionAuthorization.java:554)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.getContext(SessionAuthorization.java:527)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.reset(SessionAuthorization.java:461)
at com.pega.pegarules.session.internal.authorization.SessionAuthorization.<init>(SessionAuthorization.java:245)
at com.pega.pegarules.session.internal.mgmt.PRRequestorBase.allocateSessionAuthorization(PRRequestorBase.java:539)
at com.pega.pegarules.session.internal.mgmt.PRRequestorImpl.allocateSessionAuthorization(PRRequestorImpl.java:2009)
at com.pega.pegarules.session.internal.authorization.Authorization.reset(Authorization.java:433)
at com.pega.pegarules.session.internal.authorization.Authorization.reset(Authorization.java:382)
at com.pega.pegarules.session.internal.authorization.Authorization.onBeforeThreadUse(Authorization.java:1629)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPassivation.configureThreadImpl(ThreadPassivation.java:322)
at com.pega.pegarules.session.internal.mgmt.PRThreadBase.configureThread(PRThreadBase.java:177)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.<init>(PRThreadImpl.java:134)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.acquire(PRThreadImpl.java:158)
at com.pega.pegarules.session.internal.mgmt.base.RequestorThreadSync.getOrCreateThread(RequestorThreadSync.java:175)
at com.pega.pegarules.session.internal.mgmt.base.RequestorThreadSync.getOrCreateThread(RequestorThreadSync.java:162)
at com.pega.pegarules.session.internal.mgmt.base.RequestorThreadSync.getOrCreateThread(RequestorThreadSync.java:158)
at com.pega.pegarules.session.internal.mgmt.base.RequestorPassivation.configureRequestorImpl(RequestorPassivation.java:479)
at com.pega.pegarules.session.internal.mgmt.PRRequestorBase.configureRequestor(PRRequestorBase.java:482)
at com.pega.pegarules.session.internal.mgmt.PRRequestorImpl.<init>(PRRequestorImpl.java:300)
at com.pega.pegarules.session.internal.mgmt.PRRequestorImpl.acquire(PRRequestorImpl.java:324)
at com.pega.pegarules.session.internal.mgmt.base.MultiThreadRequestorFactory.acquire(MultiThreadRequestorFactory.java:63)
at com.pega.pegarules.session.internal.mgmt.base.NodeRequestorMgt.createRequestorImpl(NodeRequestorMgt.java:1483)
at com.pega.pegarules.session.internal.mgmt.PRNodeImpl.createRequestor(PRNodeImpl.java:273)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.borrowRequestor(PRSessionProviderImpl.java:655)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.obtainRequestor(PRSessionProviderImpl.java:1474)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:980)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:874)
at com.pega.pegarules.session.internal.mgmt.RequestorPool.borrowRequestor(RequestorPool.java:514)
at com.pega.pegarules.session.internal.mgmt.RequestorPoolManager.borrowRequestor(RequestorPoolManager.java:77)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.borrowRequestor(PRSessionProviderImpl.java:643)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.obtainRequestor(PRSessionProviderImpl.java:1474)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:980)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:841)
at com.pega.pegarules.integration.engine.internal.services.ServiceAPI.getServiceMethod(ServiceAPI.java:3051)
at com.pega.pegarules.integration.engine.internal.services.http.HTTPService.invoke(HTTPService.java:258)
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.GeneratedMethodAccessor124.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:367)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:408)
at


Steps to Reproduce



Reproducible only in production with large load.

Root Cause



A defect in Pegasystems’ code or rules.

In GlobalContextCache.getBasicApplicationContext Pega are iterating over the keyset of a synchronized map. Pega needs to manually synchronize the map before iterating over its keyset which Pega is not doing.

Resolution



Apply HFix-33202.

Published April 7, 2017 - Updated October 8, 2020

Was this useful?

0% found this useful

Have a question? Get answers now.

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

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us