Resolved-Completed status returned on erroneous Program Run
Users were starting a Program Run programmatically using the StartProgramRun activity in RuleSet (PegaMKT-Engine-07-11-05). The calling activity in PegaNBAM-Artifacts Ruleset has exception handling checking the value of pyStatusWork. Users observed an error in the logs that does not appear to be returning an erroneous pyStatusWork status. Based on the path in the application logic, a pyStatusWork of Resolved-Completed is being returned despite the error in the logs. From a database check of the database, it is confirmed that the status of the Program run is Resolved-Completed.
The order of events for when this was observed is as follows:
(1) Batch Job - 1 started at 11:26 (completed successfully at 13:32)
(2) Batch Job - 2 started at 13:32
- error at 14:37
- sent successful response back at 14:39. Note that this job was processing >400,000 records
[17/02/16 14:37:22:079 GMT] 00000099 SystemOut O 2016-02-17 14:37:22,079 [.PRPCWorkManager : 2] [ STANDARD] [YourApp:01.11.01] (atus.Pega_DM_Batch_Work.Action) ERROR - Failed to complete batch run & WO is open running for last: 30 minutes and progress of records are constant for long time
Steps to Reproduce
Run batch process that starts Program programmatically.
Following parameters are used in an activity that is waiting for the queued DSM Strategy execution to complete, it periodically reads the execution progress page and firstly tests, if it’s in pending state and applies the autoRecoveryTimeForPendingStatus parameter above to state if it’s been waiting too long and if it’s in running state then it uses the autoRecoveryTimeForOpenRunningStatus parameter to control how long it should be allowed to run for.
DSS autoRecoveryTimeForPendingStatus describes the amount of time a DSM batch job will be allowed to wait prior to being picked up.
DSS autoRecoveryTimeForOpenRunningStatus is the setting that controls the amount of time the DSM batch job will be allowed to run for prior to being terminated.
Suggested user to set the “autoRecoveryTimeForPendingStatus” and “autoRecoveryTimeForOpenRunningStatus” Dynamic System Settings parameter values to a value larger than the expected time to process. After setting the appropriate value, the reported error no more observed.