Intermittent "ValidateUser" errors when using Controller, caused by application pool timeout
User performs actions inside Controller. From time to time (occasionally / intermittently) the user receives an error message.
The exact error message will vary (depending on what the end user is doing), but it will include the phrase "ValidateUser".
In one real life case, the user:
- Logged onto Controller (as the user 'Administrator')
- Clicks "Maintain - User - Single Mode"
- Clicks "Maintain - Database - Optimise". User ticks all available options, and starts the database optimise (which takes a few minutes)
- Afterwards, user clicks OK, and then waits in the system (but doing nothing for a few minutes)
- After a few minutes, user clicks "Maintain - Account Structure - Reports"
- User ticks "Codes"
- User clicks the '...' browse button next to "Account:" (to choose account). An error appears
Description: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Cognos.Controller.Common.CRNBridge.CRNBridge.ValidateUser(String passportId, String& membership, String sGuid, String sUser, String& sErrorMessage)
at Cognos.Controller.Proxy.ControllerReportNetService.RepNet.ValidateUser(String passportId, String& membership, String sGuid, String sUser)
at Cognos.Controller.Proxy.SoapExtension.ServerExtension.ValidateCAMUser(SoapMessage& message)
at Cognos.Controller.Proxy.SoapExtension.ServerExtension.ProcessMessage(SoapMessage message)
at System.Web.Services.Protocols.SoapMessage.RunExtensions(SoapExtension extensions, Boolean throwOnException)
There are several possible causes for "ValidateUser" errors.
- TIP: Search separate IBM Technotes for more examples.
This Technote specifically relates to the scenario where the cause is a defect (reference APAR PI32861) in Controller.
- This defect is triggered when the IIS application pool has shutdown, due to inactivity of the end user exceeding its time limit.
Controller configured to use Cognos CAM (non-native) authentication.
- TIP A slightly different error appears if using Native authentication (see separate Technote 1683841).
Diagnosing the problem
Inside the Event Viewer (on the Controller application server) there will be an entry (inside the System Log) similar to the following:
Log Name: System
Date: 12/10/2014 2:46:33 PM
Event ID: 5186
Task Category: None
A worker process with process id of '5512' serving application pool '.NET v2.0' was shutdown due to inactivity. Application Pool timeout configuration was set to 20 minutes. A new worker process will be started when needed.
Resolving the problem
Upgrade to Controller 10.2.1 (10.2.5100) or later.
- TIP: In order to avoid separate defect APAR PI54534, it is recommended to upgrade to Controller 10.2.1 Fix Pack 3 (also known as version 10.2.5130.56) or later.
Increase the application pool timeout value.
- TIP: For many customers, the value of 60 (=1 hour) is sufficient. However, if this error persists, consider increasing the value further (e.g. to 600, which is 10 hours).
The following steps are based on Windows 2012. For other operating systems, the instructions will need to be amended slightly:
1. Logon to the Controller application server as an administrator
2. Click "Start - Administrative Tools - Internet Information Services (IIS) Manager"
3. Expand your server, and open section 'Application Pools'
4. Right-click on the relevant application pool (".NET v2.0") and choose "Advanced Settings...":
5. Modify the setting for " Idle Time-out (minutes)".
TIP: The default setting is 20
- For most customers, the value of 60 is sufficient
- If required, increase it further (e.g. to 600):