java - Locked object found on oracle.jdbc.driver.T4CConnection -
i using jmc perform application profiling , did not see locked/thread contention shown in screenshot below.
ran sql below (every few secs) did not return result.
select (select username v$session sid=a.sid) blocker, a.sid, ' blocking ', (select username v$session sid=b.sid) blockee, b.sid v$lock a, v$lock b a.block = 1 , b.request > 0 , a.id1 = b.id1 , a.id2 = b.id2;
what caused of lock database connection? database record/table locks?
below thread dump have extracted during execution of program when seems running forever.
java.lang.thread.state: runnable @ java.net.socketinputstream.socketread0(native method) @ java.net.socketinputstream.socketread(socketinputstream.java:116) @ java.net.socketinputstream.read(socketinputstream.java:170) @ java.net.socketinputstream.read(socketinputstream.java:141) @ oracle.net.ns.packet.receive(packet.java:283) @ oracle.net.ns.datapacket.receive(datapacket.java:103) @ oracle.net.ns.netinputstream.getnextpacket(netinputstream.java:230) @ oracle.net.ns.netinputstream.read(netinputstream.java:175) @ oracle.net.ns.netinputstream.read(netinputstream.java:100) @ oracle.net.ns.netinputstream.read(netinputstream.java:85) @ oracle.jdbc.driver.t4csocketinputstreamwrapper.readnextpacket(t4csocketinputstreamwrapper.java:123) @ oracle.jdbc.driver.t4csocketinputstreamwrapper.read(t4csocketinputstreamwrapper.java:79) @ oracle.jdbc.driver.t4cmarengine.unmarshalub1(t4cmarengine.java:1122) @ oracle.jdbc.driver.t4cmarengine.unmarshalsb1(t4cmarengine.java:1099) @ oracle.jdbc.driver.t4cttifun.receive(t4cttifun.java:288) @ oracle.jdbc.driver.t4cttifun.dorpc(t4cttifun.java:191) @ oracle.jdbc.driver.t4c8oall.dooall(t4c8oall.java:523) @ oracle.jdbc.driver.t4cpreparedstatement.dooall8(t4cpreparedstatement.java:207) @ oracle.jdbc.driver.t4cpreparedstatement.executefordescribe(t4cpreparedstatement.java:863) @ oracle.jdbc.driver.oraclestatement.executemaybedescribe(oraclestatement.java:1153) @ oracle.jdbc.driver.oraclestatement.doexecutewithtimeout(oraclestatement.java:1275) @ oracle.jdbc.driver.oraclepreparedstatement.executeinternal(oraclepreparedstatement.java:3576) @ oracle.jdbc.driver.oraclepreparedstatement.executequery(oraclepreparedstatement.java:3620) - locked <0x00000007af3423c0> (a oracle.jdbc.driver.t4cconnection)
you're confusing database locks java locks here. jmc shows locks inside java program (synchronized blocks, waits etc), knows nothing what's going on inside db. sql-query shows locks on db level (table locks, row locks etc) , knows nothing locks inside java program. absolutely different areas , absolutely different locks.
what have here dump of thread holds lock on object of type t4cconnection
address 0x7af3423c0
. means thread in process of executing code inside synchronized(connection)
block. that's all. thread not blocked other threads (otherwise state wouldn't runnable
, waiting
or blocked
). it's running , reading network socket (probably, response db).
such behaviour absolutely normal. db driver synchronization on connection instance while it's in process of executing sql-query not allow other threads use in parallel.
there's nothing should worry on screenshot , in thread dump.
Comments
Post a Comment