Issue
After updating your deployment of Pega Platform™ from version 8.x to Infinity™ release 23.1 and later, the Admin Studio no longer displays values under the State column for queue processors like pySASIncrementalIndexer.
The State column displays the value as "- -".
Errors display on the data flow pulse tasks querying pr_data_decision_ddf_runtime.
Steps to reproduce
1. Update Pega Platform to Infinity ‘23™ or later releases.
2.Open Admin Studio and click click on > .
3. All Queue processors indicate a null status, displayed as a double dash: “ -- “
4. Go to Dev Studio, select class Pega-DM-DDF-Work, click on it to open list of the instances of this class.
5. Try to open any of them, Pega shows "A processing error has occurred" error message.
6. PegaRULES log files contain errors relating to GenerateQueryException: “An error occurred on generating the query for the report definition – null"
Errors
Dataflows could not be initialised therefore QPs would not run.
Related errors:
[MSG][Could not determine delayed items data flow status due to exception][STACK][java.lang.IllegalStateException: com.pega.pegarules.data.internal.rd.querygen.GenerateQueryException: An error occurred on generating the query for the report definition - null
at com.pega.dsm.dnode.impl.stream.DataObservableImpl$ObservableIterator.hasNext(DataObservableImpl.java:198)
at com.pega.dsm.dnode.impl.stream.DataObservableImpl$ObservableIterator.next(DataObservableImpl.java:229)
at com.pega.dsm.dnode.impl.stream.DataObservableImpl.first(DataObservableImpl.java:154)
Caused by: java.lang.NullPointerException
at com.pega.pegarules.data.internal.dictionary.ColumnCategorizer$ColumnDecorator.decorateColumnName(ColumnCategorizer.java:1272)
at com.pega.pegarules.data.internal.rd.querygen.QueryUtils.getColumnName(QueryUtils.java:313)
at com.pega.pegarules.data.internal.rd.querygen.QueryUtils.getColumnName(QueryUtils.java:306)
Root Cause
Two columns pyInactiveDuration and pyLastDeactivatedTime have been added to pr_data_decision_ddf_runtime table in Infinity ‘23. If the upgrade script has not added them successfully to the environment, errors will occur.
Solution
This issue will be addressed in a future Pega Platform release.
This section will be updated once the fix is available.
To mitigate the problem, use the Schema Optimization tool to optimize the missing properties manually. You can find the documentation here: Optimizing a property from the user interface
Class:
Data-Decision-DDF-RunTimeData
Properties :
- pylastdeactivatedtime
- pyinactiveduration
You may also need to restore a DataFlow run. The below steps are required in case the Schema Optimization does not resolve the issue:
1) Stop the Queue Processor using the pxStopById activity providing the Queue Processor RunID (this will usually be the Queue Processor name).
2) Truncate the below entries from database for the blocked Queue Processor (replace placeholder <QP_NAME> with QP name)
DELETE FROM pegadata.pc_work_dsm_batch WHERE pxinsname = '<QP_NAME>';
DELETE FROM pegadata.pr_data_decision_ddf_run_opts WHERE pxinsname = '<QP_NAME>';
DELETE FROM pegadata.pr_data_decision_df_part WHERE pxworkid = '<QP_NAME>';
DELETE FROM pegadata.pr_data_decision_df_met WHERE pxworkid = '<QP_NAME>';
DELETE FROM pegadata.pr_log_dataflow_events WHERE pyrunid = '<QP_NAME>';
DELETE FROM pegadata.pr_data_decision_ddf_error WHERE pxworkid = '<QP_NAME>';
DELETE FROM pegadata.pr_data_decision_ddf_runtime WHERE pyrunid = '<QP_NAME>';
DELETE FROM pegadata.pr_data_qp_run_partition WHERE pxqueueprocessorname = '<QP_NAME>';
3) Open the <QP_NAME> rule in Dev Studio and follow
menu > > and copy the pzInsKey value (from RULE... to ...GMT);4) Find the activity BulkValidateSave from @baseclass.
5) Execute the activity BulkValidateSave and pass the copied pzInsKey value into insHandle field. A "Good" status should be displayed.
6) Wait between 2 to 4 minutes for the Queue Processor to automatically initialize and start processing the backlog if required.