Recently we have similar issue as "#621 Hang in SocketRead" at our customer end. We are using JRE 1.7u40 and jTDS 1.2.2 (on Windows). DB is MS-SQL2008 10.50.6220.
"BEEP Executor-26" tid=0x94 in RUNNABLE (running in native)
Blocked: 283195[-1ms], Waited: 360353[-1ms]
User CPU: 38m0s
- synchronizer <0x7588a31e> (a java.util.concurrent.ThreadPoolExecutor$Worker)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at java.io.DataInputStream.readFully(DataInputStream.java:195)
at java.io.DataInputStream.readFully(DataInputStream.java:169)
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:846)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:728)
- locked <0x45f11422> (a java.util.ArrayList)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
at net.sourceforge.jtds.jdbc.ResponseStream.peek(ResponseStream.java:88)
at net.sourceforge.jtds.jdbc.TdsCore.wait(TdsCore.java:3928)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1045)
- locked <0x5660e80d> (a net.sourceforge.jtds.jdbc.TdsCore)
at net.sourceforge.jtds.jdbc.MSCursorResultSet.cursorCreate(MSCursorResultSet.java:536)
at net.sourceforge.jtds.jdbc.MSCursorResultSet.<init>(MSCursorResultSet.java:154)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:430)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:772)
"BEEP Executor-24" tid=0x92 in RUNNABLE (running in native)
Blocked: 281642[-1ms], Waited: 375088[-1ms]
User CPU: 39m25s
- synchronizer <0x569b8fca> (a java.util.concurrent.ThreadPoolExecutor$Worker)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at java.io.DataInputStream.readFully(DataInputStream.java:195)
at java.io.DataInputStream.readFully(DataInputStream.java:169)
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:846)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:728)
- locked <0x569d103f> (a java.util.ArrayList)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
at net.sourceforge.jtds.jdbc.ResponseStream.peek(ResponseStream.java:88)
at net.sourceforge.jtds.jdbc.TdsCore.wait(TdsCore.java:3928)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1045)
- locked <0x6195c485> (a net.sourceforge.jtds.jdbc.TdsCore)
at net.sourceforge.jtds.jdbc.MSCursorResultSet.cursorCreate(MSCursorResultSet.java:536)
at net.sourceforge.jtds.jdbc.MSCursorResultSet.<init>(MSCursorResultSet.java:154)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:430)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:772)
- locked <0x2f9929d0> (a net.sourceforge.jtds.jdbc.ConnectionJDBC3)
Since it blocks several connection threads, we have no choice left, but to restart the application. So we need help on this?
We are experiencing the same issue in that when the SQL Server fails over using multi-subnet a connection hangs in socketRead for over 9 minutes:
It finally fails and we then get reconnected:
Took 9 Minutes 2.283 Seconds to acquire database connection
Our jdbc url:
jdbc:jtds:sqlserver://XXXX;DatabaseName=YYYY;domain=hosting;ssl=require;multisubnetfailover=true;socketTimeout=1800;sendStringParametersAsUnicode=false