Support Article
PRPC Application is starting with an error
SA-4068
Summary
After creating a new JVM and installing PRPC, the application is coming up but user is unable to get to the login page in PRPC 6.2 SP2. Instead user is getting the following Error message on screen. “Error 503: PegaRULES server not available”.
Error Messages
2014-11-06 13:52:56,489 [your_server] [ ] [ ] ( internal.access.DatabaseImpl) ERROR - Problem reading class definitions: Database-NonexistentTable pr4_base PegaRULES
2014-11-06 13:52:56,491 [your_server] [ ] [ ] ( mgmt.base.ThreadPassivation) FATAL - There was a problem initializing the Database Interface: Database-NonexistentTable pr4_base PegaRULES
com.pega.pegarules.pub.database.NonexistentTableException: Database-NonexistentTable pr4_base PegaRULES
From: (unknown)
at com.pega.pegarules.data.internal.access.TableInformationMapImpl.lookupTableInfo(TableInformationMapImpl.java:520)
at com.pega.pegarules.data.internal.access.TableInformationMapImpl.get(TableInformationMapImpl.java:383)
at com.pega.pegarules.data.internal.access.TableInformationMapImpl.getWithConnection(TableInformationMapImpl.java:350)
at com.pega.pegarules.data.internal.dictionary.ClassMapImpl.init(ClassMapImpl.java:1814)
at com.pega.pegarules.data.internal.access.DatabaseImpl.<init>(DatabaseImpl.java:1645)
at com.pega.pegarules.data.internal.access.DatabaseImpl.newDatabaseImpl(DatabaseImpl.java:1558)
at com.pega.pegarules.data.internal.PRDataProviderImpl.ctorDatabaseImpl(PRDataProviderImpl.java:600)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPassivation.configureThreadImpl(ThreadPassivation.java:267)
at com.pega.pegarules.session.internal.mgmt.PRThreadBase.configureThread(PRThreadBase.java:442)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.<init>(PRThreadImpl.java:307)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.acquire(PRThreadImpl.java:322)
at com.pega.pegarules.session.internal.mgmt.base.RequestorThreadSync.getOrCreateThread(RequestorThreadSync.java:171)
at com.pega.pegarules.session.internal.mgmt.base.RequestorThreadSync.getOrCreateThread(RequestorThreadSync.java:158)
at com.pega.pegarules.session.internal.mgmt.base.RequestorThreadSync.getOrCreateThread(RequestorThreadSync.java:154)
at com.pega.pegarules.session.internal.mgmt.base.RequestorPassivation.configureRequestorImpl(RequestorPassivation.java:411)
at com.pega.pegarules.session.internal.mgmt.PRRequestorBase.configureRequestor(PRRequestorBase.java:474)
at com.pega.pegarules.session.internal.mgmt.PRRequestorImpl.<init>(PRRequestorImpl.java:267)
at com.pega.pegarules.session.internal.mgmt.PRRequestorImpl.acquire(PRRequestorImpl.java:284)
at com.pega.pegarules.session.internal.mgmt.base.NodeRequestorMgt.createRequestorImpl(NodeRequestorMgt.java:1184)
Caused by:
com.pega.pegarules.pub.database.NonexistentTableException: Database-NonexistentTable pr4_base PegaRULES
From: (unknown)
at com.pega.pegarules.data.internal.access.TableInformationMapImpl.lookupTableInfo(TableInformationMapImpl.java:520)
at com.pega.pegarules.data.internal.access.TableInformationMapImpl.get(TableInformationMapImpl.java:383)
at com.pega.pegarules.data.internal.access.TableInformationMapImpl.getWithConnection(TableInformationMapImpl.java:350)
at com.pega.pegarules.data.internal.dictionary.ClassMapImpl.init(ClassMapImpl.java:1814)
at com.pega.pegarules.data.internal.access.DatabaseImpl.<init>(DatabaseImpl.java:1645)
at com.pega.pegarules.data.internal.access.DatabaseImpl.newDatabaseImpl(DatabaseImpl.java:1558)
at com.pega.pegarules.data.internal.PRDataProviderImpl.ctorDatabaseImpl(PRDataProviderImpl.java:600)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPassivation.configureThreadImpl(ThreadPassivation.java:267)
Steps to Reproduce
Log into PRPC application.
Root Cause
This error can occur when two different Process Commander Database schemas are present in the same database server, but the Data-Admin-DB-Table instances do not explicitly identify which schema to use.
Two or more schemas can be present in one database. The issue occurs when a database contains multiple schemas, supporting multiple versions of Process Commander, where the corresponding tables have differing columns.
For example, if you're running Version 6.1, and you install Version 6.2 into the same database instance, then the Version 6.2 schema has additional columns in some of the tables. Such differences in table columns can arise even without a major version change; it could occur with just a difference in minor versions or even two different setups “dev” and “test” on one database, as long as the database schemas differ. In addition, this situation may also occur when a database schema is moved from one system (“dev”) into another (“test”).
A JDBC statement is used to retrieve column information from the database. This statement is invoked the first time the system needs to read from or write to each table in the database, to fetch the column information for that table.
To identify the schema, this JDBC statement relies on the information entered into the Database Table instances (Data-Admin-DB-Table class).
If the database contains two similar schemas in the database, but neither is uniquely identified in the Database Table instance, then the JDBC statement returns columns from all tables in the database with the requested table name (“pr4_base”), no matter what schema they belong to which results in the com.pega.pegarules.pub.database.NonexistentTableException.
Resolution
The following PDN article clearly explains the issue in detail and the resolution:
https://pdn.pega.com/pegarules-database/troubleshooting-obj-save-is-trying-to-write-to-a-non-existent-column
Follow the resolution steps under https://pdn.pega.com/pegarules-database/troubleshooting-obj-save-is-trying-to-write-to-a-non-existent-column and restart your server(s) or JVM(s) to resolve this issue.
Published January 31, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.