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

Users cannot obtain lock on any work objects

SA-37914

Summary



The application could not obtain a lock on a specific class in order to lock the work object.

Error Messages



"Database-BadDBDef-Missing with the following parameters: pegarules
com.pega.pegarules.pub.database.BadDatabaseDefinitionException: Database-BadDBDef-Missing pegarules
From: (unknown)
at com.pega.pegarules.data.internal.access.ConnectionManagerImpl.getDBConfig(ConnectionManagerImpl.java:2701)
at com.pega.pegarules.data.internal.access.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:1172)
at com.pega.pegarules.data.internal.access.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:1129)
at com.pega.pegarules.data.internal.access.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:343)
at com.pega.pegarules.data.internal.access.ThreadConnectionStoreImpl.getConnection(ThreadConnectionStoreImpl.java:424)
at com.pega.pegarules.data.internal.dictionary.ClassMapImpl.lookupTableName(ClassMapImpl.java:4363)
at com.pega.pegarules.data.internal.dictionary.ClassMapImpl.getTableName(ClassMapImpl.java:1177)
at com.pega.pegarules.data.internal.dictionary.ClassDefinitionImpl.getDatabase(ClassDefinitionImpl.java:1021)
at com.pega.pegarules.data.internal.access.RuleResolver.getRuleCandidateIterator(RuleResolver.java:2057)
at com.pega.pegarules.data.internal.access.RuleResolver.lookupFirstLevelCandidates(RuleResolver.java:2307)


Steps to Reproduce



The steps to reproduce the problem are unknown.
It requires special circumstances as described below.
The problem manifests when attempting to access a work object and the required esential pr4_base table entries are missing.


Root Cause



A defect or configuration issue in the operating environment.

The table pr4_rule_vw contains rows with NULL in the pyRuleset column and pyClass values that are starting with RULE-.

There is no good explanation of how this data got there.

There was a row in the table that contained the class group that was needed to obtain a lock. This is a Data-Admin-DB-ClassGroup class.
Also deleted was the Data-Admin-DB-Name for pegarules. This is shown in the log.


An operator with access to the Designer Studio portal and Allow Checkout flag unchecked, happened to click the Private checkout link. Rather than showing no checkouts, this returned a list of all rows in table pr4_rule_vw that had null in the pyRuleset column. This criteria was used because all rows in the table should be ruleset resolved rules that will always have a value in pyRuleset.

The operator then attempted to discard the checkouts using bulk action. This had the effect of removing all the Data- class objects from pr4_base that had invalid entries in the pr4_rule_vw table.



Resolution



Apply HFix-34836.

In addition all rows that have null in pyRuleset or don't have pyClass starting with RULE- should be removed from pr4_rule_vw table.

Published June 19, 2017 - 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