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

System is not adding entry into pr_sys_context table

SA-21568

Summary



A user cannot log in if already logged in. If the user has already logged in, another session will not be opened and an error message is thrown.

When user has already logged in, an entry is added into custom table and this entry would be removed when the user logged off or requestor is timed out. Agent runs for every 15 mins to check for pr_sys_context table, and if entry is available in pr_sys_context table then that user record is cleared from custom table. If the entry is available in custom table, another session will not be logged in with the user.

But sometimes, if the session timed out, entry is not added to pr_sys_context table. The agent does not pick the record. Another session cannot be logged in.


User added the below entry in prconfig xml file to save into pr_sys_context table.
<env name="initialization/persistrequestor/storage" value="database" />

Error Messages



Not Applicable

Steps to Reproduce



1. Log in to application.
2. Keep the session idle till it is timed out.

Root Cause



An issue in the custom application code or rules:
The previous session is not passivated unless the passivation daemon is run. Despite the entry made by user in custom table, user cannot log in to system, since there is no entry in pr_sys_context table for the old session.


Resolution



Define an activity with a Java step, and write Java code as below to delete the stale requestor, which is active but not visible in ‘pr_sys_context’ table.

The statement given below returns a string value, which is the list of requestors in XML format.

Object test = 
com.pega.pegarules.priv.management.MBeanManagement.executeMBeanOperation("com.pega.pegarules.management.internal.RequestorManagement","RequestorList",null,null,null);
//oLog.infoForced("test"+test);
// test is an instance of string , for any string operations please type 
cast test to String object.

String specific operations, like the example below, can be performed.

Boolean checkActive = test.contains("REQUESTOR_ID");

If(checkActive)
{
test = 
com.pega.pegarules.priv.management.MBeanManagement.executeMBeanOperation("com.pega.pegarules.management.internal.RequestorManagement","StopRequestor","H0DADAD0A8BEC9BEACFAD43B31C04FBC9",null,null);
oLog.infoForced("test"+test);
}

Published April 4, 2016 - 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