Support Article

Data page exception in cluster environment after restart

SA-36605

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 April 17, 2017 - Updated May 5, 2017

Have a question? Get answers now.

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