Contributed by Michael Cunanan and Rohit Patel
Cases were reported for Pega Platform™ versions Pega 8.8.1, 8.7.4, 8.7.3, 8.6.3, 8.6.5, 8.6.6, 8.5.6, and 8.5.5 pertaining to Runtime Engine > Engine > Rule Assembly > Application-Based Assembly Cache.
Companion document
Symptoms
Errors
Explanation
Environments
Solutions
Related content
Companion document
Managing weekly reboots and the default schedule for the PurgeAssemblyDatabaseCache agent [SDR-A2]
Symptoms
The pyClusterAndDBCleaner job scheduler fails with the Errors. As a result of this job scheduler failure, the size of cache tables increases immensely, temp file size exceeds its limit, and system performance degrades.
When the PurgeAssemblyDatabaseCache agent fails or not enough data is otherwise deleted from the cache tables, you might want to truncate the cache tables as a remedy. But truncating cache tables is risky and can lead to more serious issues in your Pega environment.
The following cache tables typically increase in size when the PurgeAssemblyDatabaseCache agent fails:
pr_assembledclasses
pr_sys_appcache_entry
pr_sys_appcache_shortcut
pr_sys_appcache_dep
pr_sys_rule_impl
pr_sys_app_ruleset_index
pr_sys_app_hierarchy_flat
pr_sys_ruleset_index
Errors
There was a problem getting a list code: 0 SQLState: 53400 Message:
ERROR: temporary file size exceeds temp_file_limit
and
JobScheduler) ERROR - Exception in executing Job[pyClusterAndDBCleaner]
com.pega.platform.executor.jobscheduler.scheduler.JobExecutionException: Job scheduler [pyClusterAndDBCleaner] activity [pzClusterAndDBCleaner] execution marked as failed with message [Exception while defragmenting Table::pr_sys_delayed_queue associated with class::System-Message-QueueProcessor-DelayedItem: code: 0 SQLState: 08006 Message: An I/O error occurred while sending to the backend.]. Exception message [-].
at . . . <various contexts>
Explanation
User misunderstanding
Pegasystems defect - Defragmentation step in the job scheduler pyClusterAndDBCleaner
Extraneous unused application branches can exhaust cache files, resulting in degraded system performance. Extraneous branches usually result from malpractice in managing application branches.
Adding to the causes of this problem is the fact that Pega often ships diagnostic branches. When you have finished using a diagnostic branch and have completed your diagnosis of the problem for which it was intended, if you forget to remove or merge the unused branches, your cache files will become bloated and degrade system performance.
The nightly job pyClusterAnd DBCleaner failed to run, generating the exception Job scheduler [pyClusterAndDBCleaner] activity execution marked as failed with message [Exception while defragmenting Table]. This failure was traced to the step in pyClusterAndDBCleaner that performs defragmentation. Because current usage has moved away from using this defragmentation step in favor of a locally run utility such as DB2's REORG, the defragmentation step was removed from the pzClusterAndDBCleaner activity in the Pega Platform releases that deliver the defect correction. See Solutions.
Environments
The problem was reported in the following environments:
- Pega Platform version 8.5.5 on-premises
- Pega Platform version 8.5.6 on-premises
- Pega Platform version 8.6.6 on-premises
- Pega Platform version 8.6.5 on-premises
- Pega Platform version 8.6.3 on-premises
- Pega Platform version 8.7.3 on-premises
- Pega Platform version 8.7.4 on-premises
- Pega Platform version 8.8.1 on-premises
- Pega Cloud® services 2.24.4
Solutions
Choose the solution that best meets your needs:
Solution for immediate remediation of the problem
Best practice
To prevent the bloating of cache tables and files, you should merge branches or remove dead branches, Pega branches, and inactive or unused branches.
Depending on the version of Pega Platform that you are using, see Developing applications in branches (Pega Platform 8.7) or Developing applications in branches (Pega Platform 8.8).
Solution for immediate remediation of the problem
- Add the dynamic system settings (DSSes) shown below for the PurgeAssemblyDatabaseCache agent.
- Change the agent’s schedule to run daily.
fua/maximumAssembliesToPurge Determines the number of assemblies that will be picked up by the PurgeAssemblyDatabaseCache agent.
Purpose: fua/maximumAssembliesToPurge
Owning Ruleset: Pega-RulesEngine
Value: 50000 (For a very large development environment, you can use a value up to 300000.)
Default Value: 5000
fua/maximumApplicationsToPurge Determines the number of applications that will be picked up by the PurgeAssemblyDatabaseCache agent.
Purpose: fua/maximumApplicationsToPurge
Owning Ruleset: Pega-RulesEngine
Value: 50000 (For a very large development environment, you can use a value up to 300000.)
Default Value: 10000
purgeAgeInDaysForRuleSetInRuleSetIndex Determines the age of ruleset index in days.
Owning Ruleset: "Pega-RulesEngine"
Purpose: "fua/purgeAgeInDaysForRuleSetInRuleSetIndex"
Value: 30 (or a lower value, for example 15, according to your requirements)
Default value: 90 days
maxResultToDeleteFromRuleSetIndexTable Determines the maximum number of results to delete from the ruleset index table.
Owning Ruleset: "Pega-RulesEngine"
Purpose: "fua/maxResultToDeleteFromRuleSetIndexTable"
Value: 50000 (For a very large development environment, you can use a value up to 400000.)
Default Value: 100000
fua/skipHasPurgeHappenedSinceStartupCheck Enables Purge to run the first time after server restart
Owning Ruleset: "Pega-RulesEngine"
Purpose: "fua/skipHasPurgeHappenedSinceStartupCheck"
Value : true
Default Value: false
Still need assistance?
If you still need assistance with managing unused branches in branched application development, submit a Support ticket:
- Go to My Support Portal.
- Click Create a ticket.
- Click .
Related content
Pega Documentation
Developing applications in branches (Pega Platform 8.7)
Developing applications in branches (Pega Platform 8.8)
Node and cluster default job schedulers
Default dynamic system settings
Pega Support Documents
Do not modify or truncate critical System tables