Friday, October 31, 2014

WebCenter Content: CheckIn Form Performance Issue with Author Field

Applicable to WebCenter Content(UCM) 11.1.1.8.0

Recently I faced an performance issue with WebCenter Content Checkin form after integration with OID(LDAP).

Whenever I clicked on New CheckIn link, the page used to take 3-4 minutes and sometimes throws following out of memory error in logs.

Error:
java.io.IOException: !csUnableToExecMethod,processFilterEvent
     at idcservlet.common.ClassHelperUtils.convertToIOException(ClassHelperUtils.java:167)
     at idcservlet.ServletUtils.executeContentServerIntegrateMethodOnConfig(ServletUtils.java:1686)
Caused by: java.lang.OutOfMemoryError: allocLargeObjectOrArray: [C, size 16400
      at java.io.BufferedWriter.(BufferedWriter.java:87)
      at java.io.BufferedWriter.(BufferedWriter.java:70)

I was able to resolve out of memory error by increasing JVM size for content server. Luckily I found 3 different solutions(based on requirements) to improve performance and avoid JVM size increase.

Cause: The issue found to be due to huge set of users loaded from OID to Content Server USERS table and wheneven checkin form loads, the page tries to load all the users from USERS table in Author field drop down list.

Solution:
1. Restrict Author Field to display only LOCAL users

The data presented in the metadata option lists is controlled by Tables and Views within the Configuration Manager.  One specific view used for the Author field is called "docauthors" and it contains the values of all the users in the system including external users.

If this view is modified and only "Local" users are included the list is much more manageable and checkin page response times should be much faster.

Steps:
  • Open Configuration Manager --> Views --> docAuthors --> Edit --> Options 
  • Set dUserAuthType = LOCAL and publish schema
  • View the checkin page. View the options under the Author drop down and the external users should now be missing

2. Create Global Rule and Set Author field as Info Only

Set Author field as Info only, so that CheckIn form won't load all the users from USERS table. It will display only logged in user in read-only format.
  • Open Configuration Manager --> Rules --> click Add
  • Provide Rule name and switch to Fields tab. Click Add
  • Select Field Name 'Author'(dDocAuthor) and click OK
  • Select Field type as 'Info Only' and click OK
  • Click OK to save & apply Rule

3. Disable Users Sync

In 11.1.1.8.0 version, by default there's a scheduled job that runs, SynchronizeUsers. It does a query to the OID(LDAP) server and populates the UCM schema Users table.

Steps:
  • In the config.cfg file add this parameter: DisableSyncUsers=true
  • Restart the UCM
  • In the Users table, drop the rows that have EXTERNAL set in the dUserAuthType column

Note: Do not drop the rows that have LOCAL or GLOBAL set in the dUserAuthType column