IBM Support

PI56467: @Transactional rollBackOn/don'tRollbackOn scans the exception cl ass hierarchy in the wrong direction

Subscribe

You can track all active APARs for this component.

 

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

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSD28V","label":"WebSphere Application Server Liberty Core"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"855","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
11 January 2022