Support Article
Log-Usage issue with Large Requestor Name
SA-3251
Summary
After some penetration testing, there were requestors created with long names. Work manager tries to save information about them into Log-Usage. The error customer is receiving is "KeyPropertyTooBig PXINSNAME PegaRULES pr_perf_stats 128 135". Error shows up in the logs every 5 minutes. Error only shows up on the nodes where the requestors were created.
Error Messages
2014-11-05 00:06:10,066 | ERROR | java.lang.ThreadGroup[name=PRPCWorkManager_WM: PRPCEAR,maxpri=10] | : | internal.access.DatabaseImpl | Msg: A commit cannot be performed because a deferred save of instance LOG-USAGE HD958105FCA5C6A6FCA4025B670581A17%26ECHO%20E203A82EF9%20A753A43A95%26!20141031T155428.824 GMT!B5FF837FE0C1056AED4AA852C8AFFC10!INTERVAL failed
2014-11-05 00:06:10,066 | ERROR | java.lang.ThreadGroup[name=PRPCWorkManager_WM: PRPCEAR,maxpri=10] | : | internal.access.DatabaseImpl | Msg: The deferred save failed with the following exception
com.pega.pegarules.pub.database.BadTableMappingException: Database-BadTableMapping-KeyPropertyTooBig PXINSNAME PegaRULES pr_perf_stats 128 135 HD958105FCA5C6A6FCA4025B670581A17%26ECHO%20E203A82EF9%20A753A43A95%26!20141031T155428.824 GMT!B5FF837FE0C1056AED4AA852C8AFFC10!INTERVAL Log-Usage
From: (B04BA61CDA26F2E3FFEABE3A5F780D167:(Usage Daemon))
at com.pega.pegarules.pub.database.BadTableMappingException.createKeyPropertyTooBigException(BadTableMappingException.java:244)
at com.pega.pegarules.data.internal.access.Saver.makeSureNoCriticalPropertiesAreTooBigForTheirColumns(Saver.java:1764)
at com.pega.pegarules.data.internal.access.Saver.saveDeferred(Saver.java:332)
at com.pega.pegarules.data.internal.access.DatabaseImpl.saveDeferred(DatabaseImpl.java:4996)
at com.pega.pegarules.data.internal.access.DatabaseImpl.saveDeferred(DatabaseImpl.java:4980)
at com.pega.pegarules.monitor.internal.UsageDaemonImpl.processUsageData(UsageDaemonImpl.java:921)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1059)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:771)
at com.pega.pegarules.monitor.internal.UsageDaemonImpl.processData(UsageDaemonImpl.java:735)
at com.pega.pegarules.monitor.internal.UsageDaemonImpl.run(UsageDaemonImpl.java:663)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.processAsyncTask(AsyncServant.java:198)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.AsyncServant.invoke(AsyncServant.java:148)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._invokeEngine_privact(EngineImpl.java:312)
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:221)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:349)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:390)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingException(PRBootstrap.java:412)
at com.pega.pegarules.internal.etier.ejb.EngineBeanBoot.invokeEngine(EngineBeanBoot.java:168)
at com.pega.pegarules.internal.etier.interfaces.EJSLocalStatelessEngineBMT_f2439d86.invokeEngine(Unknown Source)
at com.pega.pegarules.session.internal.engineinterface.etier.mdb.PRAsync.processRequest(PRAsync.java:151)
at com.pega.pegarules.session.internal.engineinterface.etier.asynchbeans.AsyncTask.run(AsyncTask.java:64)
at com.pega.pegarules.session.internal.engineinterface.etier.asynchbeans.RunnableWrapper.run(RunnableWrapper.java:71)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:268)
at java.security.AccessController.doPrivileged(AccessController.java:228)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:768)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:159)
at java.lang.Thread.run(Thread.java:738)
2014-11-05 00:06:10,066 | ERROR | java.lang.ThreadGroup[name=PRPCWorkManager_WM: PRPCEAR,maxpri=10] | : | monitor.internal.UsageDaemonImpl | Msg: Unable to save usage data to the database; verify that the table for Log-Usage has the correct schema
2014-11-05 00:06:10,066 | ERROR | java.lang.ThreadGroup[name=PRPCWorkManager_WM: PRPCEAR,maxpri=10] | : | monitor.internal.UsageDaemonImpl | Msg: Error occurred while attempting to commit
2014-11-05 00:06:10,066 | ERROR | java.lang.ThreadGroup[name=PRPCWorkManager_WM: PRPCEAR,maxpri=10] | : | monitor.internal.UsageDaemonImpl | Msg: Usage Failure Reason 1: Database-General A commit cannot be performed because a deferred save of instance LOG-USAGE HD958105FCA5C6A6FCA4025B670581A17%26ECHO%20E203A82EF9%20A753A43A95%26!20141031T155428.824 GMT!B5FF837FE0C1056AED4AA852C8AFFC10!INTERVAL failed
2014-11-05 00:06:10,066 | ERROR | java.lang.ThreadGroup[name=PRPCWorkManager_WM: PRPCEAR,maxpri=10] | : | monitor.internal.UsageDaemonImpl | Msg: Usage data discarded
Steps to Reproduce
Create requestor with name greater than 128 characters.
Root Cause
The column size was changed from 128 to 256. However, a restart of the instance to pick up the change was not performed.
Resolution
This issue is resolved through the following local change: Restarted the production node.
Published January 31, 2016 - 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.