Question

Coforge DPA UK Ltd.
IN
Last activity: 2 Jan 2018 9:43 EST
ProcessPurging(PegaMKT-Engine) agent recording errors
We have an OOTB agent (ProcessPurging) in PegaMKT-Engine ruleset. This is scheduled to run every day at 23:00:00 GMT in production. Whenever this agent starts running, the below error message is being recording in the PegaRULES.log
2017-12-12 23:00:13,153 [-threads-2069685777)] [ STANDARD] [ IKC:01.01.01] (able.Pega_DM_Batch_Work.Action) ERROR - Failed to clean up class data :History-Data-BatchOutPR1867 in database :PegaDATA
2017-12-12 23:00:16,561 [-threads-2069685777)] [ STANDARD] [ IKC:01.01.01] (l.access.ConnectionManagerImpl) ERROR - Not returning connection 2 for database "externalmktdata" to the pool as it previously encountered the following error
User ID: System
Last SQL: select count (*) as "pyCount" from APP_PEGA_NBAM.BatchOutPR1867 where pxObjClass = 'Data-BatchOutPR1867'
java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
We have an OOTB agent (ProcessPurging) in PegaMKT-Engine ruleset. This is scheduled to run every day at 23:00:00 GMT in production. Whenever this agent starts running, the below error message is being recording in the PegaRULES.log
2017-12-12 23:00:13,153 [-threads-2069685777)] [ STANDARD] [ IKC:01.01.01] (able.Pega_DM_Batch_Work.Action) ERROR - Failed to clean up class data :History-Data-BatchOutPR1867 in database :PegaDATA
2017-12-12 23:00:16,561 [-threads-2069685777)] [ STANDARD] [ IKC:01.01.01] (l.access.ConnectionManagerImpl) ERROR - Not returning connection 2 for database "externalmktdata" to the pool as it previously encountered the following error
User ID: System
Last SQL: select count (*) as "pyCount" from APP_PEGA_NBAM.BatchOutPR1867 where pxObjClass = 'Data-BatchOutPR1867'
java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3594)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3695)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1378)
at com.pega.pegarules.data.internal.access.DatabasePreparedStatementImpl.execute(DatabasePreparedStatementImpl.java:581)
at com.pega.pegarules.data.internal.access.DatabaseImpl.list(DatabaseImpl.java:6202)
at com.pega.pegarules.data.internal.access.DatabaseImpl.executeRDB(DatabaseImpl.java:6676)
at com.pega.pegarules.data.internal.access.DatabaseImpl.executeRDB(DatabaseImpl.java:6632)
at com.pega.pegarules.data.internal.access.DatabaseImpl.executeRDB(DatabaseImpl.java:6613)
at Pega.Page.RDBExecute(Page.java:1175)
at com.pegarules.generated.activity.ra_action_validatedeleteinternal_03b9f12d63c5e0bb1fc8914dc86991ab$Pz_8_0_1.step(ra_action_validatedeleteinternal_03b9f12d63c5e0bb1fc8914dc86991ab.java:874)
at com.pegarules.generated.activity.ra_action_validatedeleteinternal_03b9f12d63c5e0bb1fc8914dc86991ab.step8_circum0(ra_action_validatedeleteinternal_03b9f12d63c5e0bb1fc8914dc86991ab.java:837)
at com.pegarules.generated.activity.ra_action_validatedeleteinternal_03b9f12d63c5e0bb1fc8914dc86991ab.perform(ra_action_validatedeleteinternal_03b9f12d63c5e0bb1fc8914dc86991ab.java:197)
at com.pega.pegarules.session.internal.mgmt.Executable.doActivity(Executable.java:3505)
My Analysis:
As part of this agent execution, the activity “validatedeleteinternal” is being called and at the step-8 of this activity there is a Java method running a select query on the corresponding tables of class instances “Rule-Obj-Class”. The code for this is as below:
String thisClassName = myStepPage.getValue("pyClassName");
Page RuleListPage = createPage("Code-Pega-List", "InstanceList");
RuleListPage.setValue("pyObjClass", thisClassName);
RuleListPage.setValue("pyMaxRecords", "0");
String sqlString = "select count (*) as \"pyCount\" from {Class:" + thisClassName + "} where pxObjClass = '" + thisClassName + "'";
RuleListPage.RDBExecute(sqlString);
This is selecting the count value, but in the where condition it is referring “pxObjClass” as one of the column for Data-BatchOutPRXXXX table. But there is no such column at all in this table. For your information, this class is being created in one of the application ruleset created by us.
Can you please suggest if this is the defect in the product as it is referring the table’s column (pxObjClass) which is not available for Data-BatchOutPRXXXX table( XXXX – is some 4 digit number)?
Kindly suggest the fix for this issue.
***Updated by moderator: Lochan to update SR group tag***