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 May 12, 2017 - Updated June 19, 2017

Have a question? Get answers now.

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