suche 36x36
  • Admin-Scout-small-Banner
           

    CURSOR Admin-Scout

    get the ultimate tool for Informix

    pfeil  
Latest versionsfixlist
14.10.xC10 FixList
12.10.xC16.X5 FixList
11.70.xC9.XB FixList
11.50.xC9.X2 FixList
11.10.xC3.W5 FixList
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

Informix - Problem description

Problem IT30967 Status: Closed

DRIVER CAN DEADLOCK WHEN CLOSING LARGE OBJECT INPUT STREAM WHILEEXECUTING
STATEMENTS IN PARALLEL

product:
IBM JDBC / 5724I3501 / 410 - Informix 4.10
Problem description:
Both getGeneratedCursor and IfxLobInputStream.close() lock on
ifxSqliConnect (the connection).
When ran in parallel they can enter a deadlock condition with
the underlying SQLI protocol lock
which is used for fastpath execution (used for closing the lob)
as well as for normal statement execution.

Thread Dump below:


"ajp-nio-8009-exec-25" - Thread t@156044
   java.lang.Thread.State: BLOCKED

        at
com.informix.jdbc.IfxSqliConnect.getGeneratedCursor(IfxSqliConne
ct.java:4179)
        - waiting to lock  (a
com.informix.jdbc.IfxSqliConnect) owned by
"ajp-nio-8009-exec-21" t@156021
        - locked  (a com.informix.jdbc.IfxSqliConnect)

        at
com.informix.jdbc.IfxStatement.getGeneratedCursor(IfxStatement.j
ava:898)
        at
com.informix.jdbc.IfxStatement.getCursorName(IfxStatement.java:8
83)
        at
com.informix.jdbc.IfxSqli.sendQuery(IfxSqli.java:1688)
        at
com.informix.jdbc.IfxSqli.sendStatementQuery(IfxSqli.java:1521)
        at
com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:150
0)


"ajp-nio-8009-exec-21" - Thread t@156021
   java.lang.Thread.State: WAITING

        at sun.misc.Unsafe.park(Native Method)
        - waiting to lock  (a
java.util.concurrent.locks.ReentrantLock$NonfairSync) owned by
"ajp-nio-8009-exec-25" t@156044

        at
java.util.concurrent.locks.LockSupport.park(LockSupport.java:186
)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndChe
ckInterrupt(AbstractQueuedSynchronizer.java:847)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQue
ued(AbstractQueuedSynchronizer.java:881)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Ab
stractQueuedSynchronizer.java:1210)
        at
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Reentr
antLock.java:220)
        at
java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java
:296)
        at
com.informix.jdbc.IfxSqliConnect.lockSession(IfxSqliConnect.java
:4120)
        at
com.informix.jdbc.IfxSqli.executeFastPath(IfxSqli.java:5080)
        at
com.informix.jdbc.IfxSqli.executeFastPath(IfxSqli.java:5038)
        at
com.informix.jdbc.IfxSmartBlob.IfxLoRelease(IfxSmartBlob.java:53
9)
        at
com.informix.jdbc.IfxLobInputStream.close(IfxLobInputStream.java
:243)

        - locked  (a com.informix.jdbc.IfxSqliConnect)

        at
java.io.BufferedInputStream.close(BufferedInputStream.java:494)
        at
com.halo.portal.servlet.ThumbnailServlet.doGet(ThumbnailServlet.
java:86)
Problem Summary:
****************************************************************
* USERS AFFECTED:                                              *
* Users of Informix JDBC versions prior to 4.50.JC3.           *
****************************************************************
* PROBLEM DESCRIPTION:                                         *
* Both getGeneratedCursor and IfxLobInputStream.close() lock   *
* on                                                           *
* ifxSqliConnect (the connection).                             *
* When ran in parallel they can enter a deadlock condition     *
* with                                                         *
* the underlying SQLI protocol lock                            *
* which is used for fastpath execution (used for closing the   *
* lob)                                                         *
* as well as for normal statement execution.                   *
****************************************************************
* RECOMMENDATION:                                              *
****************************************************************
Local Fix:
Solution
Workaround
****************************************************************
* USERS AFFECTED:                                              *
* Users of Informix JDBC versions prior to 4.50.JC3.           *
****************************************************************
* PROBLEM DESCRIPTION:                                         *
* Both getGeneratedCursor and IfxLobInputStream.close() lock   *
* on                                                           *
* ifxSqliConnect (the connection).                             *
* When ran in parallel they can enter a deadlock condition     *
* with                                                         *
* the underlying SQLI protocol lock                            *
* which is used for fastpath execution (used for closing the   *
* lob)                                                         *
* as well as for normal statement execution.                   *
****************************************************************
* RECOMMENDATION:                                              *
****************************************************************
Comment
Fixed in Informix JDBC version 4.50.JC4.
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
15.11.2019
15.11.2019
18.12.2019
Problem solved at the following versions (IBM BugInfos)
4.50.JC4
Problem solved according to the fixlist(s) of the following version(s)
Informix EditionsInformix Editions
Informix Editions
DocumentationDocumentation
Documentation
IBM NewsletterIBM Newsletter
IBM Newsletter
Current BugsCurrent Bugs
Current Bugs
Bug ResearchBug Research
Bug Research
Bug FixlistsBug Fixlists
Bug Fixlists
Release NotesRelease Notes
Release Notes
Machine NotesMachine Notes
Machine Notes
Release NewsRelease News
Release News
Product LifecycleProduct Lifecycle
Lifecycle
Media DownloadMedia Download
Media Download