Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

no timeout? #141

Open
ewsq opened this issue Dec 17, 2019 · 1 comment
Open

no timeout? #141

ewsq opened this issue Dec 17, 2019 · 1 comment

Comments

@ewsq
Copy link

ewsq commented Dec 17, 2019

My program occasionally stops at a very simple statistical statement, and cannot go down.

select count(*) from T_ALARM where updatestamp>=TO_DATE('2019-12-15 00:00:00','YYYY-MM-DD HH24:MI:SS') and updatestamp<TO_DATE('2019-12-16 00:00:00','YYYY-MM-DD HH24:MI:SS')

After checking that the database has not locked the object, and the program has been unable to recover (at least waiting for more than 10 hours), you must restart the program to solve.

The procedure is as follows:

public static int getTotalRow(String tableName, String startTime,String endTime) {
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
StringBuffer sb = new StringBuffer();
sb.append(" select count(*) from " + tableName + " where updatestamp>=TO_DATE('" + startTime + "','YYYY-MM-DD HH24:MI:SS') and updatestamp<TO_DATE('" + endTime + "','YYYY-MM-DD HH24:MI:SS')");
int total = 0;
try {
conn = OracleUtil.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sb.toString());
while (rs.next()) {
total = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
OracleUtil.releaseDB(rs, stmt, conn);
}
return total;
}

Jstack information is as follows:
2019-12-17 10:06:37
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.231-b11 mixed mode):

"Attach Listener" #43 daemon prio=9 os_prio=0 tid=0x00007f7e90001000 nid=0x6d46 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|6c32b8d, dataSourceName->oracle]-HelperThread-#2" #34 daemon prio=5 os_prio=0 tid=0x00007f7e48004800 nid=0x5910 in Object.wait() [0x00007f7e94ece000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:683)
- locked <0x00000000800301a0> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|6c32b8d, dataSourceName->oracle]-HelperThread-#1" #33 daemon prio=5 os_prio=0 tid=0x00007f7e48003800 nid=0x590f in Object.wait() [0x00007f7e94fcf000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:683)
- locked <0x00000000800301a0> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|6c32b8d, dataSourceName->oracle]-HelperThread-#0" #32 daemon prio=5 os_prio=0 tid=0x00007f7e48008000 nid=0x590e in Object.wait() [0x00007f7e950d0000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:683)
- locked <0x00000000800301a0> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|145012a4, dataSourceName->mysql]-HelperThread-#2" #31 daemon prio=5 os_prio=0 tid=0x00007f7e5413d000 nid=0x273b in Object.wait() [0x00007f7e957d1000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:683)
- locked <0x000000008001ed18> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|145012a4, dataSourceName->mysql]-HelperThread-#1" #30 daemon prio=5 os_prio=0 tid=0x00007f7e5413b000 nid=0x273a in Object.wait() [0x00007f7e958d2000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:683)
- locked <0x000000008001ed18> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|145012a4, dataSourceName->mysql]-HelperThread-#0" #29 daemon prio=5 os_prio=0 tid=0x00007f7e54120800 nid=0x2739 in Object.wait() [0x00007f7e959d3000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:683)
- locked <0x000000008001ed18> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|145012a4, dataSourceName->mysql]-AdminTaskTimer" #28 daemon prio=5 os_prio=0 tid=0x00007f7e54115800 nid=0x2738 in Object.wait() [0x00007f7e95ad4000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x000000008002fe40> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"oracle.jdbc.driver.BlockSource.ThreadedCachingBlockSource.BlockReleaser" #27 daemon prio=4 os_prio=0 tid=0x00007f7e4c002800 nid=0x2707 in Object.wait() [0x00007f7eacba1000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser.run(BlockSource.java:327)
- locked <0x000000008002fe98> (a oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser)

"C3P0PooledConnectionPoolManager[identityToken->1hge31sa73pg8ty1selgnh|6c32b8d, dataSourceName->oracle]-AdminTaskTimer" #23 daemon prio=5 os_prio=0 tid=0x00007f7e540b1800 nid=0x2703 in Object.wait() [0x00007f7ead3a5000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x0000000080047c80> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"DestroyJavaVM" #21 prio=5 os_prio=0 tid=0x00007f7ef4009800 nid=0x26df waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Thread-1" #20 prio=5 os_prio=0 tid=0x00007f7ef457c800 nid=0x2701 runnable [0x00007f7ead4a6000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at oracle.net.ns.Packet.receive(Packet.java:311)
at oracle.net.ns.DataPacket.receive(DataPacket.java:105)
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:305)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:249)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:171)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:89)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79)
at oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:429)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:397)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:762)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
at oracle.jdbc.driver.OracleStatement.doScrollExecuteCommon(OracleStatement.java:5270)
at oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:5302)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1325)
- locked <0x00000000f36fecf8> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:422)
at com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:327)
at com.vcare.conver.InsertDataToMySQL.getTotalRow(InsertDataToMySQL.java:268)
at com.vcare.conver.InsertDataToMySQL.insertDataToMysql(InsertDataToMySQL.java:167)
at com.vcare.conver.InsertDataToMySQL.freshData(InsertDataToMySQL.java:153)
at com.vcare.thd.SyncThread.run(SyncThread.java:26)

"mysql-cj-abandoned-connection-cleanup" #18 daemon prio=5 os_prio=0 tid=0x00007f7ef447f800 nid=0x2700 in Object.wait() [0x00007f7eadbda000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
- locked <0x000000008001eed8> (a java.lang.ref.ReferenceQueue$Lock)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:85)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

"Service Thread" #17 daemon prio=9 os_prio=0 tid=0x00007f7ef42d6000 nid=0x26fd runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread11" #16 daemon prio=9 os_prio=0 tid=0x00007f7ef42d3000 nid=0x26fc waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread10" #15 daemon prio=9 os_prio=0 tid=0x00007f7ef42d1000 nid=0x26fb waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread9" #14 daemon prio=9 os_prio=0 tid=0x00007f7ef42cf000 nid=0x26fa waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread8" #13 daemon prio=9 os_prio=0 tid=0x00007f7ef42cd000 nid=0x26f9 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread7" #12 daemon prio=9 os_prio=0 tid=0x00007f7ef42ca800 nid=0x26f8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread6" #11 daemon prio=9 os_prio=0 tid=0x00007f7ef42c8800 nid=0x26f7 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread5" #10 daemon prio=9 os_prio=0 tid=0x00007f7ef42c6000 nid=0x26f6 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread4" #9 daemon prio=9 os_prio=0 tid=0x00007f7ef42bc000 nid=0x26f5 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread3" #8 daemon prio=9 os_prio=0 tid=0x00007f7ef42ba000 nid=0x26f4 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x00007f7ef42b7800 nid=0x26f3 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f7ef42b5800 nid=0x26f2 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f7ef42b3000 nid=0x26f1 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f7ef42b1000 nid=0x26f0 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f7ef4280000 nid=0x26ef in Object.wait() [0x00007f7eaebea000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
- locked <0x000000008005a8f8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f7ef427b800 nid=0x26ee in Object.wait() [0x00007f7eaeceb000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
- locked <0x0000000080061690> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"VM Thread" os_prio=0 tid=0x00007f7ef4272000 nid=0x26ed runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f7ef401e800 nid=0x26e0 runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f7ef4020800 nid=0x26e1 runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f7ef4022800 nid=0x26e2 runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f7ef4024000 nid=0x26e3 runnable

"GC task thread#4 (ParallelGC)" os_prio=0 tid=0x00007f7ef4026000 nid=0x26e4 runnable

"GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00007f7ef4028000 nid=0x26e5 runnable

"GC task thread#6 (ParallelGC)" os_prio=0 tid=0x00007f7ef4029800 nid=0x26e6 runnable

"GC task thread#7 (ParallelGC)" os_prio=0 tid=0x00007f7ef402b800 nid=0x26e7 runnable

"GC task thread#8 (ParallelGC)" os_prio=0 tid=0x00007f7ef402d000 nid=0x26e8 runnable

"GC task thread#9 (ParallelGC)" os_prio=0 tid=0x00007f7ef402f000 nid=0x26e9 runnable

"GC task thread#10 (ParallelGC)" os_prio=0 tid=0x00007f7ef4031000 nid=0x26ea runnable

"GC task thread#11 (ParallelGC)" os_prio=0 tid=0x00007f7ef4032800 nid=0x26eb runnable

"GC task thread#12 (ParallelGC)" os_prio=0 tid=0x00007f7ef4034800 nid=0x26ec runnable

"VM Periodic Task Thread" os_prio=0 tid=0x00007f7ef42d8800 nid=0x26fe waiting on condition

JNI global references: 273

@swaldman
Copy link
Owner

It's a checked out statement stuck in socket read. You might try Oracle JDBC specific timeouts. At the c3p0-level, unreturnedConnectionTimeout could be used to at least try to interrupt this (by closing the Connection out from underneath the hang).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants