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.

enter image description here enter image description here enter image description here 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

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -