WebSphere news from IBM: December 11, 2013
Technote (troubleshooting)
Problem(Abstract)
If you have chosen to store your WebSphere Application Server transaction and compensation logs in a Relational Database, and your system has constrained resources, the server might fail to start.
Cause
The recovery log service has attempted to obtain information from the WebSphere Application Server Directory Service before that service has fully initialized, and this recovery log service operation has timed out. The length of time taken for the directory service to initialize can vary depending on your system environment.
Diagnosing the problem
The following exception is reported in the WebSphere Application Server log file:
WsServerImpl E WSVR0009E: Error occurred during startup
com.ibm.ws.exception.RuntimeError: com.ibm.ws.recoverylog.spi.InternalLogException: Failed to locate DataSource, com.ibm.ws.recoverylog.spi.InternalLogException: Failed to locate DataSource
at com.ibm.ws.tx.util.WASTMHelper.asynchRecoveryProcessingComplete(WASTMHelper.java:176)
at com.ibm.tx.util.TMHelper.asynchRecoveryProcessingComplete(TMHelper.java:57)
at com.ibm.tx.jta.impl.RecoveryManager.recoveryFailed(RecoveryManager.java:1412)
at com.ibm.tx.jta.impl.RecoveryManager.run(RecoveryManager.java:1942)
at java.lang.Thread.run(Thread.java:773)
Caused by: com.ibm.ws.recoverylog.spi.InternalLogException: Failed to locate DataSource, com.ibm.ws.recoverylog.spi.InternalLogException: Failed to locate DataSource
at com.ibm.ws.recoverylog.custom.jdbc.impl.SQLMultiScopeRecoveryLog.openLog(SQLMultiScopeRecoveryLog.java:525)
at com.ibm.tx.jta.impl.RecoveryManager.run(RecoveryManager.java:1886)
… 1 more
Caused by: Failed to locate DataSource, com.ibm.ws.recoverylog.spi.InternalLogException: Failed to locate DataSource
at com.ibm.ws.recoverylog.custom.jdbc.impl.SQLNonTransactionalDataSource.getDataSource(SQLNonTransactionalDataSource.java:249)
at com.ibm.ws.recoverylog.custom.jdbc.impl.SQLMultiScopeRecoveryLog.getConnection(SQLMultiScopeRecoveryLog.java:760)
at com.ibm.ws.recoverylog.custom.jdbc.impl.SQLMultiScopeRecoveryLog.openLog(SQLMultiScopeRecoveryLog.java:393)
… 2 more
Resolving the problem
Increase the timeout value for the recovery log service operation by completing the following steps:
- Open the WebSphere Application Server administrative console.
- Click Servers > Server Types > WebSphere application servers > server_name.
- Under Server Infrastructure, click Java and Process Management > Process definition.
- Under Additional properties, click Java Virtual Machine > Custom properties > New.
- In the Name field, enter com.ibm.ws.recoverylog.custom.jdbc.impl.ConfigOfDataSourceTimeout.
- In the Value field, enter an integer timeout value in milliseconds; for example, to set the timeout to 10 seconds, enter 10000.
- Click OK, then click Save to save your changes to the master configuration.
The default value for the com.ibm.ws.recoverylog.custom.jdbc.impl.ConfigOfDataSourceTimeout property is two seconds.