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

Rules resolution identified 2 version of the rule

SA-11470

Summary



This is an intermittent issue where after a developer checks out a rule, makes some changes, then deletes the checkout,  the system complains that rule resolution identified 2 versions of the rule.



Error Messages



2015-05-05 14:36:38,639 | ERROR | WebContainer : 2 |<company>.com | Claims_Work_ClaimAdmin.Stream | Msg: Section 'HeadStaticContent' execution error on page 'pyWorkPage' of class 'Claims-Work-ClaimAdmin'.
com.pega.pegarules.pub.generator.UnresolvedAssemblyError: Unable to select between versions




Caused by:
com.pega.pegarules.pub.database.MultipleRuleVersionException: Rule resolution identified 2 versions of the rule with class Rule-Obj-When and name @BASECLASS!ISENABLEBETTERHTML5SUPPORT

Steps to Reproduce



Unable to reproduce on demand as it seems to occur randomly. When it does occur, these are the steps that developers report

1. check out a rule (normal not private)
2. make changes to the rule
3. delete checkout
4. get error that there are 2 versions

Root Cause



Entries in that pr_sys_updatescache are inserted through a trigger defined on pr4_rule table. In general they are inserting pzObjClass to OLD.pxObjClass of the entry which got deleted from pr4_rule. But in this case, the pxObjClass is empty.



Resolution



Replace faulty trigger below,

CREATE TRIGGER PEGA71R.TRPR4_RULE_DEL
AFTER delete ON PEGA71R.PR4_RULE
REFERENCING OLD AS OLD
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
CALL PEGA71D.PRPC_UPDATESCACHE(OLD.PZINSKEY, OLD.PXHOSTID,

NULL, 'true&pyRuleSet=' || COALESCE(OLD.PYRULESET, '')) ;
END `

with,


CREATE TRIGGER PEGA71R.TRPR4_RULE_DEL
AFTER delete ON PEGA71R.PR4_RULE
REFERENCING OLD AS OLD
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
CALL PEGA71D.PRPC_UPDATESCACHE(OLD.PZINSKEY, OLD.PXHOSTID,
OLD.PXOBJCLASS, 'true&pyRuleSet=' || COALESCE(OLD.PYRULESET, '')) ;
END `
 

Published July 7, 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