Resolving user mismatch between the user information cache and the database

When the user is mismatched between the user information cache and the database, the user information cache holds references to users that are not in the database. If the user information in the cache is used for further database operations, a database transaction that follows the mismatch might fail with a constraint violation exception. To prevent this mismatch, you can add the user-info-cache-block-period configuration setting to the 100Custom.xml files. Using this setting, you can specify a period of time during which the cache entry is considered invalid and is not used (if it has not been confirmed by at least one successful read from the database).

About this task

When you access information for a user, IBM® BPM loads the information into a user information cache. When the user is not yet available in the IBM BPM database, the user information is nonetheless initialized in the database. If a transaction fails that covers both the cache and database initialization, the database entry is rolled back, but the cache entry is not. As a result, the user is mismatched between the cache and the database.

The problem of user information mismatch between the cache and the database only occurs in a few environments. As a result, the specified period of time is set to the default value of 0 milliseconds, which means that cache entries are always considered valid. You should only change this value if you experience exceptions, such as a SqlIntegrityConstraintViolationException exception in the SystemOut.log file that begins with the following lines:

com.lombardisoftware.client.delegate.BusinessDelegateException:
 PreparedStatementCallback;
 SQL [insert into LSW_USR_GRP_MEM_XREF (USER_ID, GROUP_ID) values (?, ?)];

Procedure

To add the configuration setting to the 100Custom.xml file, complete the following steps:

  1. Stop the server for IBM Process Server or Process Center.
  2. Open each 100Custom.xml file. For information about the individual 100Custom.xml files that need to be updated and their locations, see the topic Location of configuration files.
  3. In each 100Custom.xml file, add the user-info-cache-block-period setting. For example, to prevent administrators from accessing task instance data, add the following elements under the <properties> element:
    <server>
        <user-info-cache-block-period merge="replace">120000
        </user-info-cache-block-period>
    </server>
    The period of time is specified in millisecond (ms). If you do not want to use the default value of 0, the recommended time period is 120000 (2 minutes). If the setting is not set, the period of time defaults to 0. If a value of 0 is specified, the cache entries are always considered valid.
  4. In each 100Custom.xml file, save your changes.
  5. In a browser, open each 100Custom.xml file to ensure that it contains no special characters.
  6. Complete one of the following steps:
    • In a clustered environment, ensure that the changes are propagated to the nodes by forcing a synchronization and restarting the deployment environment.
    • In a stand-alone server environment, restart the server.