PQ80962: The nested exception logged in
SystemOut.log when WTRN0008W is logged
Downloadable files
Abstract
The nested exception logged in SystemOut.log when
WTRN0008W is logged is generic and hides the underlying cause of the
problem.
Download Description
The WebSphere Application Server source code in the XARecoveryData
logic catches one exception when a XARecoveryFailure occurs trying to
recover units of work (transactions) that are in the
WebSphere/AppServer/logs/serverName/tranlog file, but then it throws a
generic exception back to the caller of
com.ibm.ejs.jts.jta.recovery.XARecoveryData.replay, which results in the
nested exception (the root cause exception) being described as a
java.lang.Exception rather than being the real exception that caused the
failure in the first place.
The original exception in the log is WTRN0008W: Object cannot be
deserialized. The exception stack
trace follows: java.lang.reflect.InvocationTargetException:
java.io.InvalidClassException:
com.ibm.ejs.j2c.J2CXAResourceInfo; Local class not compatible:
stream classdesc serialVersionUID=-3960254616107858224 local class
serialVersionUID=-175344259732450552
.
This results in the following message being logged later in SystemOut.log
[11/6/03 12:41:24:031 CST] 3a6e5c WsServer E WSVR0003E:
Server server1 failed to start
com.ibm.ws.exception.RuntimeError: Transaction Service recovery failure
at
com.ibm.ws.runtime.component.TxServiceImpl.start(TxServiceImpl.java:214)
at
com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:543)
at
com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:418)
at
com.ibm.ws.runtime.component.ApplicationServerImpl.start(ApplicationServerImpl.java:117)
at
com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:543)
at
com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:418)
at
com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:183)
at com.ibm.ws.runtime.WsServer.start(WsServer.java:128)
at com.ibm.ws.runtime.WsServer.main(WsServer.java:225)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ws.bootstrap.WSLauncher.main(WSLauncher.java:94)
---- Begin backtrace for nested exception
java.lang.Exception
at
com.ibm.ejs.jts.jta.recovery.XARecoveryData.replay(XARecoveryData.java:467)
at
com.ibm.ejs.jts.jta.recovery.XARecoveryManager.init(XARecoveryManager.java:259)
.
This java.lang.Exception really should be the InvokationTargetException
that is logged previously.
During recovery, the transaction code recovers certain classes from the
transaction log files. In the course of this objects are deserialized, and
certain exceptions were explicitly being caught - and being reported
correctly. When another exception was rasied, a generic exception was
being thrown, which resulted in a java.lang.Exception being reported. This
made problem determination more difficult.
Prerequisites
Please download the UpdateInstaller below to install this fix.