APAR status
Closed as program error.
Error description
When using XA transactions, if an optimistic database conflict
occurs, an exception is thrown from
com.ibm.ws.Transaction.JTA.TransactionImpl some non-qualified
RollbackExcpetion is thrown.
So the application cannot reconstruct why the rollback has
happened, although the application server knows the reason for
the exception, but it doesn't forward the complete exception
stack to the application.
Local fix
n/a
Problem summary
****************************************************************
* USERS AFFECTED: All WebSphere Application Server users *
****************************************************************
* PROBLEM DESCRIPTION: Exception returned to client does not *
* have causal information in it. *
****************************************************************
* RECOMMENDATION: *
****************************************************************
When using XA transactions, if an optimistic database conflict
occurs, an exception is thrown from
com.ibm.ws.Transaction.JTA.TransactionImpl - some
non-qualified RollbackException is thrown. So the application
cannot reconstruct why the rollback has happened, although the
application server knows the reason for the exception. It
doesn't forward the complete exception stack to the
application.
Problem conclusion
In this case, an OptimisticUpdateFailedException was being
thrown in SyncDriver. This exception was caught and a
RuntimeException was thrown, but the original exception was
discarded. Later, TransactionImpl caught the RuntimeException
and threw a TransactionRolledbackException, but, again, the
RuntimeException was discarded. So, by the time the client
received the TransactionRolledbackException, it was impossible
to determine programmatically the original exception.
There are two versions of the fix for this APAR:
In WebSphere version 5.0.x, exception handling conforms to the
Java 1.3.1 standard which does not support nested exceptions.
In this case, messages from previous exceptions will be
inserted into the message created for the current exception.
Previous exceptions can be determined by the occurance of the
keyword 'causedBy' in the exception message, which itself can
be accessed via the getMessage() method.
Classes TrecInterface, TerminatorImpl, UserTransactionImpl and
CoordinatorImpl will be changed to imbed the exceptions in
this way.
The fix for this APAR is currently targeted for inclusion in
fixpack 5.0.2.17 Please refer to the Recommended Updates page
for delivery information:
http://www-1.ibm.com/support/docview.wss?rs=180&context=SSEQTP&
uid=swg27004980
In WebSphere version 5.1.x, exception handling conforms to the
Java 1.4.1 standard which does support nested exceptions. In
this case, messages from previous exceptions are nested in the
current exception by using the initCause() method. So a client
can extract the previous exceptions by looping through the
nested exceptions, each of which can be obtained by the
getCause() method.
Classes SyncDriver, RegisteredSyncs and TransactionImpl will
be changed to include the nested exceptions.
The fix for this APAR is currently targeted for inclusion in
fixpack 5.1.1.10. Please refer to the Recommended Updates page
for delivery information:
http://www-1.ibm.com/support/docview.wss?rs=180&context=SSEQTP&
uid=swg27004980
Temporary fix Comments
APAR information |
APAR number |
PK19059 |
Reported component name |
WAS NETWRK DEPL |
Reported component ID |
5630A3601 |
Reported release |
00W |
Status |
CLOSED PER |
PE |
NoPE |
HIPER |
NoHIPER |
Special Attention |
NoSpecatt |
Submitted date |
2006-02-02 |
Closed date |
2006-03-13 |
Last modified date |
2006-04-18 |
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
PK21644
Modules/Macros
REGSYNCS |
SYNCDRVR |
TERMIMPL |
TRANIMPL |
TRECIFCE |
USERTRAN |
Publications Referenced
|
Fix information |
Fixed component name |
WAS NETWRK DEPL |
Fixed component ID |
5630A3601 |
Applicable component levels |
R003 PSY |
UP |
R00A PSY |
UP |
R00H PSY |
UP |
R00I PSY |
UP |
R00P PSY |
UP |
R00S PSY |
UP |
R00W PSY |
UP |
R103 PSY |
UP |
R10A PSY |
UP |
R10H PSY |
UP |
R10I PSY |
UP |
R10P PSY |
UP |
R10S PSY |
UP |
R10W PSY |
UP |
|