The agent calls API: pega.purgeFUADatabaseCache(), which at the high level purges the old assembly entries (the DSS that is used for define 'old' is (Pega-RulesEngine, fua/minimumDelayHoursForPurgeAgent) - default value is 24 hours). The agent normally runs once a day, should only run on one node for a multinode environment. Do not confuse this with manually truncating the rule assembly tables, which was done only if the system becomes unusable sometimes. I believe the purge will touch part or all of the cache tables - which you can find in this article for example: https://pdn.pega.com/support-articles/performance-issues-skin-rules
we had a discussion in our project if it's acceptable to truncate the rule assembly cache tables on the development environment if it tends to get slow, or that this agent should do its work. We are now using the truncate as a workaround solution.
From the method name, this clears the First Use Assembly cache. I'm a bit confused by the LSA course description on rule assembly cache. If I understand it well:
- The rule assembly cache was referred to as First Use Assembly (FUA) in release prior to 6.3. The cache metadata is stored in three tables in the database. I'm guessing these are the same as with ABA;
- In PRPC v 6.3, the cache was grouped in applications instead of ruleset lists. This reduced the number of assemblies considerably and the size shrunk hugely by avoiding redundancy. ABA stores the Rule Asembly cache in three database tables (pr_sys_appcache_shortcut / pr_sys_appcache_dep / pr_sys_appcache_entry);
- In 7.1 ABA has been replaced by the Virtual Rules Table (VTable), which does not include inline rules and eliminates the context. VTable cache is stored in the database table named pr_sys_rule_impl and it contains only the mapping of the rule to the assembled classes.
We are using 7.2.1 but I see that all four tables have records so I'm assuming VTable is an extension on ABA.
Main question: What does the agent Pega-RulesEngine:PurgeAssemblyDatabaseCache / activity System-Cache-.Purge / java method purgeFUADatabaseCache() exactly do?
Sub question: Is it acceptable to truncate the rule assembly cache tables when there is bad performance?
Please, can Pega Engineering/Support publish a document with recommended settings for different regions (Dev/QA/Prod), and for special settings in multinode configurations -- especially where these are different from the OOTB settings.