IBM Support

IT20591: JDBC CONNECTION ATTEMPT TO TWO DIFFERENT JDBC PROVIDERS CAN RESULT IN A DEADLOCK

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • If an Integration Server is deployed with two or more message
    flows which require JDBC connection to two different Database
    servers then a deadlock situation can occur. The deadlock is
    observed only if both the flows process the first input message
    at the same time and invoked getJDBCType4Connection() API
    simultaneously.
    
    A javacore during the deadlock situation shows 2 threads with
    following call stack at the top :
    
    Thread 1 :
    3XMTHREADBLOCK     Waiting on:
    java/lang/J9VMInternals$ClassInitializationLock@0x00000000E1C6FD
    F0 Owned
    by: <unowned>
    3XMHEAPALLOC             Heap bytes allocated since last GC
    cycle=0
    (0x0)
    3XMTHREADINFO3           Java callstack:
    4XESTACKTRACE                at
    java/lang/J9VMInternals.newInstanceImpl(Native Method)
    4XESTACKTRACE                at
    java/lang/Class.newInstance(Class.java:1887(Compiled Code))
    4XESTACKTRACE                at
    java/util/ServiceLoader$LazyIterator.next(ServiceLoader.java:385
    )
    4XESTACKTRACE                at
    java/util/ServiceLoader$1.next(ServiceLoader.java:457)
    4XESTACKTRACE                at
    java/sql/DriverManager$2.run(DriverManager.java:522)
    4XESTACKTRACE                at
    java/sql/DriverManager$2.run(DriverManager.java:502)
    4XESTACKTRACE                at
    java/security/AccessController.doPrivileged(AccessController.jav
    a:396(Compiled Code))
    4XESTACKTRACE                at
    java/sql/DriverManager.loadInitialDrivers(DriverManager.java:502
    )
    4XESTACKTRACE                at
    java/sql/DriverManager.<clinit>(DriverManager.java:112)
    4XESTACKTRACE                at
    com/ibm/as400/access/AS400JDBCDriver.<clinit>(AS400JDBCDriver.ja
    va:143)
    4XESTACKTRACE                at
    java/lang/J9VMInternals.newInstanceImpl(Native Method)
    4XESTACKTRACE                at
    java/lang/Class.newInstance(Class.java:1887(Compiled Code))
    4XESTACKTRACE                at
    com/ibm/broker/jdbctype4/jdbcdbasemgr/JDBCType4Connection.create
    NonXAConnection(JDBCType4Connection.java:340)
    
    
    Thread 2 :
    3XMTHREADBLOCK     Waiting on:
    java/lang/J9VMInternals$ClassInitializationLock@0x00000000E1C6FD
    C0 Owned
    by: <unowned>
    3XMHEAPALLOC             Heap bytes allocated since last GC
    cycle=0
    (0x0)
    3XMTHREADINFO3           Java callstack:
    4XESTACKTRACE                at
    com/microsoft/sqlserver/jdbc/SQLServerDriver.<clinit>(SQLServerD
    river.java:903)
    4XESTACKTRACE                at
    java/lang/J9VMInternals.newInstanceImpl(Native Method)
    4XESTACKTRACE                at
    java/lang/Class.newInstance(Class.java:1887(Compiled Code))
    4XESTACKTRACE                at
    com/ibm/broker/jdbctype4/jdbcdbasemgr/JDBCType4Connection.create
    NonXAConnection(JDBCType4Connection.java:340)
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    All users of IBM Integration Bus V10.0 with JDBC connections to
    multiple JDBC providers.
    
    
    Platforms affected:
    z/OS, MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    If an Integration Server is deployed with two or more message
    flows which require JDBC connection to two different Database
    servers then a deadlock situation can occur. The deadlock is
    observed only if both the flows process the first input message
    at the same time and invoked getJDBCType4Connection() API
    simultaneously.
    
    A javacore during the deadlock situation shows 2 threads with
    following call stack at the top :
    
    Thread 1 :
    3XMTHREADBLOCK     Waiting on:
    java/lang/J9VMInternals$ClassInitializationLock@0x00000000E1C6FD
    F0 Owned
    by: <unowned>
    3XMHEAPALLOC             Heap bytes allocated since last GC
    cycle=0
    (0x0)
    3XMTHREADINFO3           Java callstack:
    4XESTACKTRACE                at
    java/lang/J9VMInternals.newInstanceImpl(Native Method)
    4XESTACKTRACE                at
    java/lang/Class.newInstance(Class.java:1887(Compiled Code))
    4XESTACKTRACE                at
    java/util/ServiceLoader$LazyIterator.next(ServiceLoader.java:385
    )
    4XESTACKTRACE                at
    java/util/ServiceLoader$1.next(ServiceLoader.java:457)
    4XESTACKTRACE                at
    java/sql/DriverManager$2.run(DriverManager.java:522)
    4XESTACKTRACE                at
    java/sql/DriverManager$2.run(DriverManager.java:502)
    4XESTACKTRACE                at
    java/security/AccessController.doPrivileged(AccessController.jav
    a:396(Compiled Code))
    4XESTACKTRACE                at
    java/sql/DriverManager.loadInitialDrivers(DriverManager.java:502
    )
    4XESTACKTRACE                at
    java/sql/DriverManager.<clinit>(DriverManager.java:112)
    4XESTACKTRACE                at
    com/ibm/as400/access/AS400JDBCDriver.<clinit>(AS400JDBCDriver.ja
    va:143)
    4XESTACKTRACE                at
    java/lang/J9VMInternals.newInstanceImpl(Native Method)
    4XESTACKTRACE                at
    java/lang/Class.newInstance(Class.java:1887(Compiled Code))
    4XESTACKTRACE                at
    com/ibm/broker/jdbctype4/jdbcdbasemgr/JDBCType4Connection.create
    NonXAConnection(JDBCType4Connection.java:340)
    
    
    Thread 2 :
    3XMTHREADBLOCK     Waiting on:
    java/lang/J9VMInternals$ClassInitializationLock@0x00000000E1C6FD
    C0 Owned
    by: <unowned>
    3XMHEAPALLOC             Heap bytes allocated since last GC
    cycle=0
    (0x0)
    3XMTHREADINFO3           Java callstack:
    4XESTACKTRACE                at
    com/microsoft/sqlserver/jdbc/SQLServerDriver.<clinit>(SQLServerD
    river.java:903)
    4XESTACKTRACE                at
    java/lang/J9VMInternals.newInstanceImpl(Native Method)
    4XESTACKTRACE                at
    java/lang/Class.newInstance(Class.java:1887(Compiled Code))
    4XESTACKTRACE                at
    com/ibm/broker/jdbctype4/jdbcdbasemgr/JDBCType4Connection.create
    NonXAConnection(JDBCType4Connection.java:340)
    

Problem conclusion

  • The product no longer results in a deadlock situation when
    creating JDBC connections to multiple JDBC providers
    simultaneously.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v10.0      10.0.0.11
    
    The latest available maintenance can be obtained from:
    http://www-01.ibm.com/support/docview.wss?rs=849&uid=swg27006041
    
    If the maintenance level is not yet available,information on
    its planned availability can be found on:
    http://www-1.ibm.com/support/docview.wss?rs=849&uid=swg27006308
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT20591

  • Reported component name

    INTEGRATION BUS

  • Reported component ID

    5724J0540

  • Reported release

    A00

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-05-15

  • Closed date

    2017-11-28

  • Last modified date

    2017-11-28

  • 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

    INTEGRATION BUS

  • Fixed component ID

    5724J0540

Applicable component levels

  • RA00 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSNQK6","label":"IBM Integration Bus"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
23 March 2020