Banner Advanced Queuing Jobs Fail

Document ID : KB000088413
Last Modified Date : 14/04/2018
Show Technical Document Details
Issue:
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.  

 

 
Resolution:
Workaround


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.