Skip to main content

This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.

Support Article

CAQueues: Unresolved assembly errors causes service failures

SA-13049

Summary



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 Messages




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]
at com.pega.pegarules.priv.FUAUtil.throwUnresolvedAssemblyError(FUAUtil.java:423)
at com.pegarules.generated.expressions.ra_action__pystatusgroup__595b63087adaaf3997f61989451f70b9.perform(ra_action__pystatusgroup__595b63087adaaf3997f61989451f70b9.java:109)

Steps to Reproduce



Start server after clearing caches.

Root Cause



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.


Resolution



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:

 
  com.pega.pegarules.priv.FUAUtil.throwUnresolvedAssemblyError(FUAUtil.java:423)

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:
 RULE-DECLARE-EXPRESSIONS: !.PYSTATUSGROUP!

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.

Published August 13, 2015 - Updated October 8, 2020

Was this useful?

0% found this useful

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us