CA Automic Workload Automation - Automation Engine
Issue/Introduction
Error Message When using Banner General 8.3 or above: Caught: java.lang.ArrayIndexOutOfBoundsException: 5 at jobcapture.run(jobcapture.groovy:166)
When using Financial Aid Patch 8.18: Caught: java.lang.ArrayIndexOutOfBoundsException: 6 at jobcapture.run(jobcapture.groovy:167)Symptoms With the release of Banner General 8.3 Ellucian introduced the option of using Advanced Queuing (AQ) instead of DBMS_PIPE for session communication, such as the RNRQINI process. Currently, all Banner jobs are captured using the RA Banner Agent (v3.5.2 and below) which generates the errors above when it attempts to capture an Advanced Queued job.Cause When a normal job is submitted in Banner there are 8 parameters that are supplied when GJAJOBS is called. There is code in GJAJOBS for the Banner RA Agent to capture a job so all Banner submitted jobs are being captured. The code in GJAJOBS then calls jobcapture.shl passing the 8 parameters. Jobcapture.shl then calls job capture.groovy passing the 8 parameters. The first thing that jobcapture.groovy does is put the 8 job parameters into local parameters. It will then check to see if the job should be captured, which all Banner jobs are.
When RNRQINI submits a job to GJAJOBS there are only 5 parameters. These 5 parameters are then passed to jobcapture.shl. Then these 5 parameters are passed to job capture.groovy. The first thing that jobcapture.groovy does is put the job parameters into local variables but this time there are only 5 parameters. On line 166 in jobcapture.groovy it is trying to put the 6th job variable into the 6th local variable but there is no 6th job variable, thus we get a Java index out of bounds exception.
In order to bypass job capture for Advanced Queue jobs, you can modify the GJAJOBS script as outlined below.
As of the release of Banner General 8.3 the GJAJOBS script can be modified as follows to allow for AQ jobs to run from the RA Banner Agent:
# Added the next 14 lines and removed the old call to Appworx # Submit shl script just created to run in background and exit. # #UC4 modification run in foreground #still run in background as usual if we're not capturing the job #mkdir $ONE_UP #cd $ONE_UP # Added or statement $5 = QUEUE to send AQ jobs to the background tempRet=0 if [ "background" = "true" ] || [ "$5" = "QUEUE" ]; then sh $H/$TEMP.shl & else sh $H/$TEMP.shl subRet=$? fi
# if statement $5 != QUEUE to bypass password syncing for AQ jobs if [ "$5" != "QUEUE" ]; then if [ "$JOB" != "shrtrtc" ]; then if [ "$JOB" != "tsrssum" ]; then if [ "$JOB" != "tgrmisc" ]; then if [ "$JOB" != "tgrrcpt" ]; then echo JOB=$JOB #
export AGENTNAME captureDir # Added if statement $5 != QUEUE to bypass UC4 jobcapture for AQ jobs if [ "$5" != "QUEUE" ]; then if [ "$UC4" != "true" ]; then if [ "$UC4capture" = "true" ]; then #call capture script to see if job should be captured #echo $captureDir/jobcapture.shl $1 $2 $3 $4 $5 "$6" "$7" "$8" >>$captureDir/log/capture.log # Added if statement to change the printer to NOPRINT when default or NULL if [ "$6" = "default" ] || [ "$6" = "" ] then $captureDir/jobcapture.shl $1 $2 $3 $4 $5 "NOPRINT" $7 $8 else $captureDir/jobcapture.shl $1 $2 $3 $4 $5 $6 $7 $8 fi #$captureDir/jobcapture_fix.shl $1 $2 $3 $4 $5 $6 $7 $8 ret=$?
#if ret is 0 job was captured successfully #else don't exit and run it if [ $ret -eq 0 ]; then exit 0 fi fi fi fi
As of Financial Aid Patch 8.18 Ellucian has changed the value of the 5th parameter for Advanced Queue jobs. It now contains the word "QUEUE" plus and underscore plus the oneup number (i.e. QUEUE_3333333). Therefore, the GJAJOBS script can be modified as follows to allow for AQ jobs to run from the RA Banner Agent:
#Automic modification run in foreground #still run in background as usual if not capturing the job #mkdir $ONE_UP #cd $ONE_UP # Added or statement $5 = QUEUE to send AQ jobs to the background tempRet=0 # Modified if statement to work with FINAID patch 8.18 #if [ "background" = "true" ] || [ "$5" = "QUEUE" ]; aqjob=`echo $5|cut -c-5` echo "aqjob = " $aqjob if [ "background" = "true" ] || [ "$aqjob" = "QUEUE" ]; then sh $H/$TEMP.shl & else sh $H/$TEMP.shl subRet=$? fi
export AGENTNAME captureDir # Added if statement $5 != QUEUE to bypass UC4 jobcapture for AQ jobs # Modified if statement to work with FINAID patch 8.18 #if [ "$5" != "QUEUE" ]; aqjob=`echo $5|cut -c-5` if [ "$aqjob" != "QUEUE" ]; then if [ "$UC4" != "true" ]; then if [ "$UC4capture" = "true" ]; then #call capture script to see if job should be captured #echo $captureDir/jobcapture.shl $1 $2 $3 $4 $5 "$6" "$7" "$8" >>$captureDir/log/capture.log # Added if statement to change the printer to NOPRINT when default or NULL if [ "$6" = "default" ] || [ "$6" = "" ] then $captureDir/jobcapture.shl $1 $2 $3 $4 $5 "NOPRINT" $7 $8 else $captureDir/jobcapture.shl $1 $2 $3 $4 $5 $6 $7 $8 fi ret=$?
#if ret is 0 job was captured successfully #else don't exit and run it if [ $ret -eq 0 ]; then exit 0 fi fi fi fi
For additional information see Ellucian Defect 1-1C57IV4.