Support Article
ORA-29541 in a report DirectStreamReader could not be resolved
SA-693
Summary
You have a report that has a reference to a non-exposed property.
Executing the report yields this error, ORA-29541: class schema.com/pega/pegarules/data/udf/directstreamreader/DirectStreamReader could not be resolved
Compiling the various JAVA classes based on the PDN article https://pdn.pega.com/reporting/troubleshooting-ora-29541-log-error-when-running-a-report-directstreamreader-could-not-be-resolved does not help as many of the Classes still remain un-compiled. The message reported is "ORA-24344: success with compilation error".
Error Messages
ORA-29541 log error when running a report, DirectStreamReader could not be resolved
Steps to Reproduce
Run a report definition that has an unexposed column.
Root Cause
The root cause of this problem is defect/misconfiguration in the PRPC operating environment. The movement of the operating environment from one level to the next was done with native database tools. The Java code for the UDF functions was not moved, though the function prototype definitions were present in the database.
Resolution
This issue is resolved through the following local change:
You need to install the UDFs again after an install. This is true if they become broken due to databases being manipulated or moved using native DB tools.
A change is made to the OOTB setupDatabase.xml and install.bat/sh to allow a turnkey solution that makes use of the existing installation infrastructure.
This implementation requires that the setupDatabase.properties be configured as described in the installation documentation.
Step (1)
A change is made to setupDatabase.xml to add this target - the file is saved as updateUDF.xml.
<!-- Install the UDF functions only used by installUDF.bat installUDF.sh -->
<target name="udfInstall" depends="Initialization, Configuration,
UDF Generation">
<echo message="UDF install complete."/>
</target>
Step (2) from windows
This change is made to install.bat and the file is saved as installUDF.bat
rem Invoke our ant script, passing in the arguments as collected
echo Invoke our ant script, passing in the arguments as collected
call "%ANT_HOME%\bin\ant.bat" %ANT_PROPS% -f updateUDF.xml udfInstall
if not (%errorlevel%)==(0) goto Error
Step (2) from unix
This change is made to install.sh and the file is saved as installUDF.sh.
# Run Ant, given the configuration we collected
"`dirname "$0"`/bin/ant" $ANT_PROPS -f ./updateUDF.xml udfInstall
Note that the UDF functions must be dropped from the database before this script is run.
At this point you run either the installUDF.bat or installUSF.sh script to reinstall the UDF functions.
Published March 21, 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.