CAQueues: Unresolved assembly errors causes service failures
After restarting the JVM, certain commands start failing. Examining the PegaRules log file, the error indicates that no candidate for a Rule-Utility-Function (RUF) is found. This command worked fine prior to the restart of the JVM. In this example, pyStatusGroup is the Rule that contained the bad reference to an RUF.
ERROR|WebContainer : 0|2015-08-04 08:48:03,882|com.pega.pegarules.integration.engine.internal.services.ServiceAPI|SOAP service [CAQueues][Services][QueueAction] failed:PRRuntimeError.
Caused by: com.pega.pegarules.pub.generator.UnresolvedAssemblyError: Invalid expression or reference: No candidates found [possible function name, ruleset/version or number of parameter problem]
Steps to Reproduce
Start server after clearing caches.
The root cause of this problem is a defect in Pegasystems’ code/rules. After clearing caches, the system needs to rebuild Libraries before they become available for use. In this particular situation, a Service Rule fired which referenced a RUF in a library which was under construction at the time.
The resulting "No candidates found" indicates that the RUF had not yet been inserted into the Library. As a result, the compiled Java for this rule was incomplete.
This issue is resolved through the following local-change explanation:
This error does not go away when the Library completes rebuilding. It is necessary to find out which Rule referenced the RUF and use SMA to delete the cached compiled code for that rule on every node experiencing the problem.
Looking into the stack trace, the rule experiencing the problem will be the one immediately under the line in the trace showing this:
In this case it is the Rule-Declare-Expression pyStatusGroup.
Note that it is not the RUF which was missing at the time of the compilation.
Open SMA and perform the following actions on every node in the system experiencing this issue:
1. Open the Rule which referenced the missing RUF and examine the XML for the rule.
2. Find in the XML the pxObjClass and the pxInsId of the Rule. SMA requires the key to be in all capital letters.
For this example, the class is RULE-DECLARE-EXPRESSIONS, and the pxInsId is !.PYSTATUSGROUP!
3. From SMA, go to "Advanced >Virtual RuleTable Cache Management".
4. Enter the following Virtual Rule Key exactly as described above, with a colon (":") separating the two pieces:
5. Click on "Virtual Rule Table Cache Detail" to see the various entries for this rule.
6. Click on the "Reassemble Candidates" button. This should force the rebuild of the Java. Since the system has finished recompiling the Library, this compiled Java is correct and does not have the error.
0% found this useful