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

ORA-29532 java.lang.ArrayIndexOutOfBoundsException

SA-53765

Summary



Error occurs when a report is run with an unoptimized property. This works correctly if the unoptimized property value is set to less than nine characters.

UDF.properties:


oracledate.jdbc.class=oracle.jdbc.OracleDriver
dev.oracledate.url=jdbc:oracle:thin:@our_ip:1521/ncpby2
dev.oracledate.rulesSchema=PEGARULES
dev.oracledate.schema=PEGADATA


DBMS_JAVA.LONGNAME(OBJECT_NAME) STATUS OWNER
com/pega/pegarules/data/udf/directstreamreader/DirectStreamReaderDB2LUW INVALID PEGARULES
com/pega/pegarules/data/udf/directstreamreader/DirectStreamReaderDB2ZOS INVALID PEGARULES
com/pega/pegarules/data/udf/directstreamreader/DirectStreamReaderPostgreSQL INVALID PEGARULES



Error Messages



An error occured on executing the query for the report definition - There was a problem getting a list: code: 29532 SQLState: 99999 Message: ORA-29532: Java call terminated by uncaught Java exception: java.lang.ArrayIndexOutOfBoundsException DatabaseException caused by prior exception: java.sql.SQLException: ORA-29532: Java call terminated by uncaught Java exception: java.lang.ArrayIndexOutOfBoundsException | SQL Code: 29532 | SQL State: 99999


Steps to Reproduce



Run the report which has unoptimized property.


Root Cause



A defect or configuration issue in the operating environment.

It is recommended to expose a column (used in report definition) to create a new column for a particular property.

When running the report, the onscreen ArrayIndexOutofBound error indicated that the User Defined Function (UDF) installation is corrupt. Pega used UDF for reporting.

The below query is used to test if the UDF is installed correctly:


select pr_read_from_stream('pzInsKey', 'pzInsKey',pzPVStream) as "StringValue",
pr_read_int_from_stream('pzRuleSetVersionMajor', 'pzInsKey',pzPVStream) as "IntegerValue",
pr_read_decimal_from_stream('pzRuleSetVersionMinor', 'pzInsKey', pzPVStream) as "DecimalValue
from pr4_rule where rownum<5;


In this case, pr_read_from_stream may have an issue.

Run the below query to verify if the ArrayIndexOutOfBounds exception occurs from pr_read_from_stream,


select pr_read_from_stream('pzInsKey', 'pzInsKey',pzPVStream) as StringValue from rules.pr4_rule where pxinsname='@BASECLASS!ALLFLOWS';

In another scenario, the same issue may occur when executing a method in a Java class that is not compiled earlier or resolved.

Run the below query to check the same:


select * from user_objects where object_type='JAVA CLASS'; 

In any of the above cases, the issue does not occur if the UDF is reinstalled.

For more information, refer to Pega 7.2.2 manual: https://pdn.pega.com/documents/pega-722-platform-update-guide

For installation of UDF error (ORA-29506: invalid query derived from USING clause), refer to the support article, Error on installation prreadstream JAR file on Oracle: https://community.pega.com/support/support-articles/error-installation-prreadstream-jar-file-oracle

Run the below query to verify the current state of the UDFs,


Select Dbms_Java.Longname(Object_Name), status From User_Objects Where object_type LIKE 'JAVA%';

For more information, refer to: https://community.pega.com/support/support-articles/report-definition-code-29532-sqlstate-99999-message-ora-29532
 
To view the errors in either DATA or RULES schema, run these queries substituting <RULES schema> and <DATA schema> with the appropriate RULES and DATA schema names.


SELECT <RULES schema>.pr_read_from_stream('pzInsKey', pzInsKey, pzPVStream) as "StringValue",
          <RULES schema>.pr_read_int_from_stream('pzRuleSetVersionMajor', pzInsKey, pzPVStream) as "IntegerValue",
          <RULES schema>.pr_read_decimal_from_stream('pzRuleSetVersionMinor', pzInsKey, pzPVStream) as "DecimalValue"
       from <RULES schema>.pr4_rule;
 
SELECT <DATA schema>.pr_read_from_stream('pzInsKey', pzInsKey, pzPVStream) as "StringValue",
          <DATA schema>.pr_read_int_from_stream('pzRuleSetVersionMajor', pzInsKey, pzPVStream) as "IntegerValue",
          <DATA schema>.pr_read_decimal_from_stream('pzRuleSetVersionMinor', pzInsKey, pzPVStream) as "DecimalValue"
       from <DATA schema>.pr_data_admin;



Resolution



Perform the following local-change:
  1. Recompile Java classes for the schema pegarules.
  2. Recompile Java classes for the scheme pegadata.

Published December 8, 2018 - 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?

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