Fixes are available
8.5.5.9: WebSphere Application Server V8.5.5 Fix Pack 9
8.5.5.10: WebSphere Application Server V8.5.5 Fix Pack 10
8.5.5.11: WebSphere Application Server V8.5.5 Fix Pack 11
8.5.5.12: WebSphere Application Server V8.5.5 Fix Pack 12
8.5.5.13: WebSphere Application Server V8.5.5 Fix Pack 13
8.5.5.14: WebSphere Application Server V8.5.5 Fix Pack 14
8.5.5.15: WebSphere Application Server V8.5.5 Fix Pack 15
8.5.5.17: WebSphere Application Server V8.5.5 Fix Pack 17
8.5.5.20: WebSphere Application Server V8.5.5.20
8.5.5.18: WebSphere Application Server V8.5.5 Fix Pack 18
8.5.5.19: WebSphere Application Server V8.5.5 Fix Pack 19
8.5.5.16: WebSphere Application Server V8.5.5 Fix Pack 16
APAR status
Closed as program error.
Error description
CDI declarative transactions (the @Transactional annotation) provide two fields to control whether a transaction gets rolled back on a given exception: rollbackOn and dontRollbackOn. WebSphere Application Server Liberty Profile currently doesn't correctly scan the class hierarchy to see when to roll back the transaction or not. For example, consider the exception hierarchy below: RuntimeException |---MoreSpecificRuntimeException |---|---MostSpecificRuntimeException If an application has an @Transactional annotation with dontRollbackOn=RuntimeException.class, and a MoreSpecificRuntimeException is thrown, it ought to not roll back the transaction, but in fact it does. Conversely, If the application used an @Transactional annotation with dontRollbackOn=MostSpecificRuntimeAnnotation.class, it would stop the transaction getting rolled back, where it shouldn't. This inversion also applies to the rollbackOn check.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All users of the @Transaction feature in * * IBM WebSphere Application Server Liberty * **************************************************************** * PROBLEM DESCRIPTION: @Transactional * * rollBackOn/don'tRollbackOn scans the * * exception class hierarchy in the wrong * * direction * **************************************************************** * RECOMMENDATION: * **************************************************************** CDI declarative transactions (the @Transactional annotation) provide two fields to control whether a transaction gets rolled back on a given exception: rollbackOn and dontRollbackOn. WebSphere Application Server Liberty Profile currently doesn't correctly scan the class hierarchy to see when to roll back the transaction or not. For example, consider the exception hierarchy below: RuntimeException |---MoreSpecificRuntimeException |---|---MostSpecificRuntimeException If an application has an @Transactional annotation with dontRollbackOn=RuntimeException.class, and a MoreSpecificRuntimeException is thrown, it ought to not roll back the transaction, but in fact it does. Conversely, If the application used an @Transactional annotation with dontRollbackOn=MostSpecificRuntimeAnnotation.class, it would stop the transaction getting rolled back, where it shouldn't. This inversion also applies to the rollbackOn check.
Problem conclusion
The code handling @Transactional was altered to scan the exception hierarchy in the correct direction. Note that this has the potential to cause behaviour changes on existing applications: exceptions that previously caused transactions to roll back might be committed, and vice versa. The fix for this APAR is currently targeted for inclusion in fix pack 8.5.5.9. Please refer to the Recommended Updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
Temporary fix
Comments
APAR Information
APAR number
PI56467
Reported component name
WAS LIBERTY COR
Reported component ID
5725L2900
Reported release
855
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2016-02-02
Closed date
2016-02-03
Last modified date
2016-02-03
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
WAS LIBERTY COR
Fixed component ID
5725L2900
Applicable component levels
R855 PSY
UP
Document Information
Modified date:
11 January 2022