IC86701: INFORMIX JDBC DRIVER SHOULD NOT BE IMPLEMENTED WITH HASHTABLE

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as fixed if next.

Error description

  • Customer has consistently seen major lock contention that
    results from Informix JDBC driver implementation. Specifically,
    there is a Hashtable reference in IfxTypes.FromIfxToJDBCType()
    that many threads end up waiting on. Hashtable is an especially
    poor choice for a data access pattern like this, where get() is
    the common path. In Hashtable's implementation, all methods are
    synchronized including get() method.
    
    A simple fix would be to replace the Hashtable reference with a
    java.util concurrent.ConcurrentHashMap object. This is a
    complete drop in replacement for Hashtable, and allows lock-free
    access to read operations.
    
    Here is the stack trace I see:
    Waiting for Monitor Lock on
    java/util/Hashtable@0x0000000000F34BF8/0x0000000000F34C04
    
    at java/util/Hashtable.get(Hashtable.java:518(Compiled Code))
    at
    com/informix/lang/IfxTypes.FromIfxToJDBCType(IfxTypes.java:920(C
    ompiled Code))
    at
    com/informix/jdbc/IfxResultSetMetaData.getColumnType(IfxResultSe
    tMetaData.java:580(Compiled Code))
    at
    com/informix/jdbc/IfxResultSet.getObject(IfxResultSet.java:1511(
    Compiled Code))
    at
    com/informix/jdbc/IfxResultSet.getObject(IfxResultSet.java:801(C
    ompiled Code))
    at
    org/apache/commons/dbcp/DelegatingResultSet.getObject(Delegating
    ResultSet.java:286(Compiled Code))
    at
    com/ibm/pdq/runtime/data/handlers/MapRowHandler.update(MapRowHan
    dler.java:106(Compiled Code))
    at
    com/ibm/pdq/runtime/data/handlers/MapRowHandler.handle(MapRowHan
    dler.java:56(Compiled Code))
    at
    com/ibm/pdq/runtime/data/handlers/MapRowHandler.handle(MapRowHan
    dler.java:25(Compiled Code))
    at
    com/ibm/pdq/runtime/data/handlers/ListResultHandler.handle(ListR
    esultHandler.java:151(Compiled Code))
    at
    com/ibm/pdq/runtime/data/handlers/ListResultHandler.handle(ListR
    esultHandler.java:38(Compiled Code))
    at
    com/ibm/pdq/runtime/internal/db/JdbcData.queryInternal_(JdbcData
    .java:185(Compiled Code))
    at
    com/ibm/pdq/runtime/internal/db/DataImpl.queryList(DataImpl.java
    :440(Compiled Code))
    at zero/data/Manager.queryList(Manager.java:1477(Compiled Code))
    at zero/data/groovy/Manager.queryList(Manager.java:1028(Compiled
    Code))
    at sun/reflect/GeneratedMethodAccessor106.invoke(Bytecode
    PC:58(Compiled Code))
    at
    sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethod
    AccessorImpl.java:37(Compiled Code))
    at java/lang/reflect/Method.invoke(Method.java:589(Compiled
    Code))
    at
    org/codehaus/groovy/runtime/callsite/PojoMetaMethodSite$PojoCach
    edMethodSiteNoUnwrap.invoke(PojoMetaMethodSite.java:209(Compiled
    Code))
    at
    org/codehaus/groovy/runtime/callsite/PojoMetaMethodSite.call(Poj
    oMetaMethodSite.java:52(Compiled Code))
    at
    org/codehaus/groovy/runtime/callsite/AbstractCallSite.call(Abstr
    actCallSite.java:129(Compiled Code))
    at data/db._list(db.groovy:1033(Compiled Code))
    at sun/reflect/GeneratedMethodAccessor100.invoke(Bytecode
    PC:32(Compiled Code))
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * All users using Informix JDBC driver 3.70.JC5                *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    * See Error Description                                        *
    ****************************************************************
    * RECOMMENDATION:                                              *
    * Please upgrade to 3.70.JC7 and above drivers                 *
    ****************************************************************
    

Problem conclusion

Temporary fix

Comments

APAR Information

  • APAR number

    IC86701

  • Reported component name

    IBM JDBC

  • Reported component ID

    5724I3501

  • Reported release

    370

  • Status

    CLOSED FIN

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-09-20

  • Closed date

    2014-05-05

  • Last modified date

    2014-05-05

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

Applicable component levels

  • R350 PSN

       UP

  • R350 PSY

       UP

  • R370 PSN

       UP

  • R370 PSY

       UP



Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

Informix Tools
Informix JDBC

Software version:

370

Reference #:

IC86701

Modified date:

2014-05-05

Translate my page

Machine Translation

Content navigation