Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Java thread stuck when doing purgeCache and getConnection

EcTechMay 30 2016 — edited Jun 15 2016

Hi,

We have a java application which uses Oracle Connection pool for pooling the connection used by application.

At times, oracle server goes down and all the connections are broken.

In application, we start receiving exception about the broken connection.

Now using this exception, we have written code in the application to purge the connection pool so that new pool can be created whenever oracle server is available.

Issue is, at time, all the threads of application get stuck. Few threads are stuck in purging the pool, rest of the threads are stuck in creating the connection pool.

Due to this, whenever oracle server is restarted, application also has to be restarted.

JDBC jar version : 11.2.0.2.0

Please let me know if more details are required.

Below is theaddump snapshot of the application thread.

"Timer-11" id=82 idx=0x178 tid=1359 prio=5 alive, in native

    at jrockit/net/SocketNativeIO.readBytesPinned(Ljava/io/FileDescriptor;[BIII)I(Native Method)

    at jrockit/net/SocketNativeIO.socketRead(SocketNativeIO.java:32)

    at java/net/SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I(SocketInputStream.java)

    at java/net/SocketInputStream.read(SocketInputStream.java:129)

    at oracle/net/ns/Packet.receive(Packet.java:283)

    at oracle/net/ns/DataPacket.receive(DataPacket.java:103)

    at oracle/net/ns/NetInputStream.getNextPacket(NetInputStream.java:230)

    at oracle/net/ns/NetInputStream.read(NetInputStream.java:175)

    at oracle/net/ns/NetInputStream.read(NetInputStream.java:100)

    at oracle/net/ns/NetInputStream.read(NetInputStream.java:85)

    at oracle/jdbc/driver/T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123)

    at oracle/jdbc/driver/T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79)

    at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1122)

    at oracle/jdbc/driver/T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1099)

    at oracle/jdbc/driver/T4CTTIfun.receive(T4CTTIfun.java:288)

    at oracle/jdbc/driver/T4CTTIfun.doRPC(T4CTTIfun.java:191)

    at oracle/jdbc/driver/T4C7Ocommoncall.doOLOGOFF(T4C7Ocommoncall.java:61)

    at oracle/jdbc/driver/T4CConnection.logoff(T4CConnection.java:498)

    ^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x146756e88[recursive]

    at oracle/jdbc/driver/PhysicalConnection.close(PhysicalConnection.java:3931)

    ^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x146756e88[thin lock]

    at oracle/jdbc/pool/OraclePooledConnection.close(OraclePooledConnection.java:254)

    ^-- Holding lock: oracle/jdbc/pool/OraclePooledConnection@0x146753a20[thin lock]

    at oracle/jdbc/pool/OracleImplicitConnectionCache.actualPooledConnectionClose(OracleImplicitConnectionCache.java:2876)

    at oracle/jdbc/pool/OracleImplicitConnectionCache.closeAndRemovePooledConnection(OracleImplicitConnectionCache.java:2806)

    ^-- Holding lock: oracle/jdbc/pool/OracleImplicitConnectionCache@0x146a24f90[recursive]

    at oracle/jdbc/pool/OracleImplicitConnectionCache.performPooledConnectionTask(OracleImplicitConnectionCache.java:1252)

    at oracle/jdbc/pool/OracleImplicitConnectionCache.doForEveryCachedConnection(OracleImplicitConnectionCache.java:1100)

    ^-- Holding lock: oracle/jdbc/pool/OracleImplicitConnectionCache@0x146a24f90[fat lock]

    at oracle/jdbc/pool/OracleImplicitConnectionCache.purgeCacheConnections(OracleImplicitConnectionCache.java:3071)

    at oracle/jdbc/pool/OracleConnectionCacheManager.purgeCache(OracleConnectionCacheManager.java:580)

"CONN-POOL-THR-2" id=112 idx=0x1f0 tid=8789 prio=7 alive, blocked, native_blocked
-- Blocked trying to get lock: oracle/jdbc/pool/OracleImplicitConnectionCache@0x145f5d308[thin lock]
at jrockit/vm/Threads.sleep(I)V(Native Method)
at jrockit/vm/Locks.waitForThinRelease(Locks.java:955)
at jrockit/vm/Locks.monitorEnterSecondStageHard(Locks.java:1083)
at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1005)
at jrockit/vm/Locks.monitorEnter(Locks.java:2179)
at oracle/jdbc/pool/OracleImplicitConnectionCache.retrieveCacheConnection(OracleImplicitConnectionCache.java:566)
at oracle/jdbc/pool/OracleImplicitConnectionCache.getCacheConnection(OracleImplicitConnectionCache.java:471)
at oracle/jdbc/pool/OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:357)
at oracle/jdbc/pool/OracleDataSource.getConnection(OracleDataSource.java:395)
at oracle/jdbc/pool/OracleDataSource.getConnection(OracleDataSource.java:179)
at oracle/jdbc/pool/OracleDataSource.getConnection(OracleDataSource.java:157)

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 13 2016
Added on May 30 2016
5 comments
2,758 views