Deadlock When Using The Implicit Connection Cache Timetolive or Abandon Timeout (Doc ID 402788.1)

Last updated on AUGUST 03, 2016

Applies to:

JDBC - Version 10.1.0.5 to 10.2.0.2 [Release 10.1 to 10.2]
Information in this document applies to any platform.
This problem can occur on any platform.
***Checked for relevance on 14-Aug-2012***

Symptoms

An application is retrieving connection from the 10g Oracle JDBC  implicit connection cache (ICC). The application  hang can happen when the  ICC abandon or  timetolive timeout are enabled;

A deadlock is occurring when at the same time:

To illustrate this situation, here are the Java Stack dump of those threads [ Thread-11 is the ICC internal JDBC thread and Thread 14 is the application thread. (closing the connection)] :

"Thread-14":
at oracle.jdbc.pool.OracleImplicitConnectionCache.reusePooledConnection(OracleImplicitConnectionCache.java:1389)
- waiting to lock <0x10969fe0> (a oracle.jdbc.pool.OracleImplicitConnectionCache)
at oracle.jdbc.pool.OracleConnectionCacheEventListener.connectionClosed(OracleConnectionCacheEventListener.java:61)
- locked <0x109ad220> (a oracle.jdbc.pool.OracleConnectionCacheEventListener)
at oracle.jdbc.pool.OraclePooledConnection.callImplicitCacheListener(OraclePooledConnection.java:505)
at oracle.jdbc.pool.OraclePooledConnection.logicalCloseForImplicitConnectionCache(OraclePooledConnection.java:426)
at oracle.jdbc.pool.OraclePooledConnection.logicalClose(OraclePooledConnection.java:442)
at oracle.jdbc.driver.LogicalConnection.closeInternal(LogicalConnection.java:220)
at oracle.jdbc.driver.LogicalConnection.close(LogicalConnection.java:193)
- locked <0x109ad240> (a oracle.jdbc.driver.LogicalConnection)  at test.TestPool$3.run(TestPool.java:78)


"Thread-11":
at oracle.jdbc.driver.LogicalConnection.close(LogicalConnection.java:193)
- waiting to lock <0x109ad240> (a oracle.jdbc.driver.LogicalConnection)
at oracle.jdbc.pool.OracleImplicitConnectionCache.closeCheckedOutConnection(OracleImplicitConnectionCache.java:1125)
at oracle.jdbc.pool.OracleImplicitConnectionCacheThread.runTimeToLiveTimeout(OracleImplicitConnectionCacheThread.java:152)
- locked <0x10969fe0> (a oracle.jdbc.pool.OracleImplicitConnectionCache)
at oracle.jdbc.pool.OracleImplicitConnectionCacheThread.run(OracleImplicitConnectionCacheThread.java:66 )

Found 1 deadlock.

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms