Support Article
Data page exception in cluster environment after restart
Summary
Data page exception in one node in multi node environment after restart.
Whenever user restart the cluster, Pega Marketing REST API which is returning Next-Best-Action propositions are returning an error message stating "Customer Not Found", although the customer exists in the database.
However, apparently, the issue because the cluster is restarted, but after each restart REST API is failing.
Then, they manually flush the data pages created to make it work.
The issue is happening only in one node. That is to say, one node of the cluster works just fine but when user calls the same API from the second node it fails.
Error Messages
Caused by:
java.lang.IndexOutOfBoundsException: Index: 17, Size: 9
at java.util.ArrayList.rangeCheck(ArrayList.java:647)
at java.util.ArrayList.get(ArrayList.java:423)
at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyBase.decorateSingleFrame(ClipboardPropertyBase.java:3764)
at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyBase.decorateSingleFrame(ClipboardPropertyBase.java:3747)
at com.pega.pegarules.data.internal.clipboard.VirtualClipboardPageImpl.getPropertyAndSetValueIfAny(VirtualClipboardPageImpl.java:406)
at com.pega.pegarules.data.internal.clipboard.VirtualClipboardPageImpl.getString(VirtualClipboardPageImpl.java:771)
at com.pega.pegarules.data.internal.clipboard.VirtualClipboardPageImpl.getString(VirtualClipboardPageImpl.java:736)
at com.pega.pegarules.data.internal.clipboard.VirtualClipboardPageImplWrapper.getString(VirtualClipboardPageImplWrapper.java:1243)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGetString(PropertyReferenceImpl.java:1503)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getString(PropertyReferenceImpl.java:1221)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getString(PropertyReferenceImpl.java:1204)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getValueInType(ClipboardPageImpl.java:1297)
at com.pega.pegarules.session.internal.mgmt.Executable.getAnyValueViaPropRef(Executable.java:10080)
at com.pega.pegarules.session.internal.mgmt.Executable.getStringValueViaPropRef(Executable.java:10215)
at com.pega.decision.dsm.strategy.clipboard.DSMPegaAPI.getStringValueViaPropRef(DSMPegaAPI.java:1719)
Steps to Reproduce
Restarting the cluster. The API works in node #1 and fails in node #2.
Root Cause
A defect in Pegasystems’ code or rules. getValueInType API is called to fetch property values from multiple threads. This API is not thread safe.
Resolution
Apply HFix-33224.
Published May 6, 2017 - 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.