IBM Support

PI59999: OpenJPA custom plugins can cause Classloader leaks

Fixes are available

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
16.0.0.2: WebSphere Application Server Liberty 16.0.0.2
16.0.0.3: WebSphere Application Server Liberty 16.0.0.3
16.0.0.4: WebSphere Application Server Liberty 16.0.0.4
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
17.0.0.1: WebSphere Application Server Liberty 17.0.0.1
17.0.0.2: WebSphere Application Server Liberty 17.0.0.2
17.0.0.3: WebSphere Application Server Liberty 17.0.0.3
17.0.0.4: WebSphere Application Server Liberty 17.0.0.4
18.0.0.1: WebSphere Application Server Liberty 18.0.0.1
18.0.0.2: WebSphere Application Server Liberty 18.0.0.2
8.5.5.14: WebSphere Application Server V8.5.5 Fix Pack 14
18.0.0.3: WebSphere Application Server Liberty 18.0.0.3
18.0.0.4: WebSphere Application Server Liberty 18.0.0.4
19.0.0.1: WebSphere Application Server Liberty 19.0.0.1
8.5.5.15: WebSphere Application Server V8.5.5 Fix Pack 15
19.0.0.2: WebSphere Application Server Liberty 19.0.0.2
19.0.0.3: WebSphere Application Server Liberty 19.0.0.3
19.0.0.4: WebSphere Application Server Liberty 19.0.0.4
19.0.0.5: WebSphere Application Server Liberty 19.0.0.5
19.0.0.6: WebSphere Application Server Liberty 19.0.0.6
19.0.0.7: WebSphere Application Server Liberty 19.0.0.7
19.0.0.8: WebSphere Application Server Liberty 19.0.0.8
19.0.0.9: WebSphere Application Server Liberty 19.0.0.9
19.0.0.10: WebSphere Application Server Liberty 19.0.0.10
19.0.0.11: WebSphere Application Server Liberty 19.0.0.11
19.0.0.12: WebSphere Application Server Liberty 19.0.0.12
20.0.0.1: WebSphere Application Server Liberty 20.0.0.1
20.0.0.2: WebSphere Application Server Liberty 20.0.0.2
8.5.5.17: WebSphere Application Server V8.5.5 Fix Pack 17
20.0.0.3: WebSphere Application Server Liberty 20.0.0.3
20.0.0.4: WebSphere Application Server Liberty 20.0.0.4
20.0.0.5: WebSphere Application Server Liberty 20.0.0.5
20.0.0.6: WebSphere Application Server Liberty 20.0.0.6
20.0.0.7: WebSphere Application Server Liberty 20.0.0.7
20.0.0.8: WebSphere Application Server Liberty 20.0.0.8
20.0.0.9: WebSphere Application Server Liberty 20.0.0.9
20.0.0.10: WebSphere Application Server Liberty 20.0.0.10
20.0.0.11: WebSphere Application Server Liberty 20.0.0.11
20.0.0.12: WebSphere Application Server Liberty 20.0.0.12
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
8.5.5.21: WebSphere Application Server V8.5.5.21

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When a customer creates a plugin, for example a JDBCListener
    or DBDictionary, there exists the possibility for the custom
    JDBCListener to retain a reference to a Classloader, which in
    turn will not allow the Classloader to be Garbage Collected.
    For example, when the JDBCListener is part of a JEE
    application and the application is restarted, the JDBCListener
    class can be listed as as a leak suspect.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V8.5.0 and V8.5.5 who make use of    *
    *                  OpenJPA custom plugins.                     *
    ****************************************************************
    * PROBLEM DESCRIPTION: OpenJPA custom plugins (for example,    *
    *                      JDBCListener, DBDictionary) can cause   *
    *                      Classloader leaks.                      *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    When a customer creates an OpenJPA customer plugin, for
    example a JDBCListener, there exists the possibility for the
    custom JDBCListener to retain a reference to a Classloader,
    which in turn will not allow the Classloader to be GC'd. For
    example, when the JDBCListener is part of a JEE application
    and the application is restarted, the JDBCListener class can
    be listed as as a leak suspect, as follows in this leak
    suspect stack:
    75,675,296 (59.45%) [32] 67 class
    org/apache/openjpa/kernel/AbstractBrokerFactory 0x1027f7e8
    75,637,832 (59.42%) [32] 40 class
    org/apache/openjpa/lib/conf/Configurations 0xf370b48
    75,637,552 (59.42%) [64] 2
    org/apache/openjpa/lib/util/concurrent/ConcurrentReferenceHashMa
    p 0x1110fa40
    75,637,464 (59.42%) [64] 3 array of
    org/apache/openjpa/lib/util/concurrent/ConcurrentReferenceHashMa
    p$Entry 0x11115620
    75,514,544 (59.32%) [48] 4
    org/apache/openjpa/lib/util/concurrent/ConcurrentReferenceHashMa
    p$WeakEntry 0x1111edb0
    75,514,496 (59.32%) [48] 1
    java/util/concurrent/ConcurrentHashMap 0x111f47b8
    75,514,448 (59.32%) [80] 16 array of
    java/util/concurrent/ConcurrentHashMap$Segment 0x111f47e8
    75,505,976 (59.32%) [32] 2
    java/util/concurrent/ConcurrentHashMap$Segment 0x111f48d0
    75,505,912 (59.32%) [24] 1 array of
    java/util/concurrent/ConcurrentHashMap$HashEntry 0x110d8f08
    75,505,888 (59.32%) [24] 2
    java/util/concurrent/ConcurrentHashMap$HashEntry 0x110d8f18
    75,505,752 (59.32%) [32] 18 class listener/MyJDBCListener
    0x10296078
    75,505,600 (59.31%) [48] 1 java/util/HashMap 0x11113f88
    75,505,552 (59.31%) [65,552] 6,411 array of
    java/util/HashMap$Entry 0x1401ed10
    As can be seen in this stack, the JDBCListener class (class
    MyJDBCListener) is part of the leak suspect, with a retained
    Configurations class. When looking at the OpenJPA
    Configurations class, it can be seen that the Configurations
    class has a ConcurrentReferenceHashMap which contains a
    Classloader to Map, where the Map contains the JDBCListener
    class (MyJDBCListener). It is these two maps which cause the
    leak.
    

Problem conclusion

  • With this fix, code has been added to OpenJPA to ensure a
    'weak' reference is made to the Configuration class, thus
    allowing the custom plugin class to be GC'd after an
    application restart.
    
    The fix for this APAR is currently targeted for
    inclusion in Service Level (Fix Pack) 8.5.5.10 of WebSphere
    Application Server version 8.5.5 and Fix Pack 16.0.0.2 of Web
    Liberty.
    
    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

    PI59999

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    850

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-03-31

  • Closed date

    2016-06-22

  • Last modified date

    2016-06-27

  • 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

    WEBS APP SERV N

  • Fixed component ID

    5724H8800

Applicable component levels

  • R850 PSY

       UP

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

Document Information

Modified date:
28 April 2022