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) |