quartz scheduler中的错误:java.sql.SQLRecoverableException:无法从套接字读取更多数据

时间:2015-11-25 12:06:02

标签: quartz-scheduler c3p0

我们在石英调度程序中收到以下警告/错误。我们将作业存储在Oracle DB中。这是我们第一次看到这个错误。我已经在很多论坛上检查过,没有找到正确的解决方案。关于这个问题的任何想法?

Nov 24, 2015 12:22:03 PM com.mchange.v2.c3p0.impl.NewPooledConnection handleThrowable
WARNING: [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
Nov 24, 2015 12:22:03 `enter code here`PM com.mchange.v2.c3p0.impl.NewPooledConnection handleThrowable
WARNING: [c3p0] Another error has occurred [ java.sql.SQLRecoverableException: No more data to read from socket ] which will not be reported to listeners!
java.sql.SQLRecoverableException: No more data to read from socket
        at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1200)
        at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:279)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
        at oracle.jdbc.driver.T4C7Ocommoncall.doOCOMMIT(T4C7Ocommoncall.java:75)
        at oracle.jdbc.driver.T4CConnection.doCommit(T4CConnection.java:558)
        at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3674)
        at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3680)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.commit(NewProxyConnection.java:803)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:73)
        at com.sun.proxy.$Proxy16.commit(Unknown Source)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.commitConnection(JobStoreSupport.java:3670)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3789)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggersFired(JobStoreSupport.java:2900)
        at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:336)

Nov 24, 2015 12:22:03 PM com.mchange.v2.c3p0.impl.NewPooledConnection handleThrowable
WARNING: [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
Nov 24, 2015 12:22:03 PM com.mchange.v2.c3p0.impl.NewPooledConnection handleThrowable
WARNING: [c3p0] Another error has occurred [ java.sql.SQLRecoverableException: No more data to read from socket ] which will not be reported to listeners!
java.sql.SQLRecoverableException: No more data to read from socket
        at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1200)
        at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:279)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
        at oracle.jdbc.driver.T4C7Ocommoncall.doOROLLBACK(T4C7Ocommoncall.java:68)
        at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:642)
        at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3716)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.rollback(NewProxyConnection.java:855)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

2 个答案:

答案 0 :(得分:1)

我们遇到了同样的错误,它是由连接泄漏引起的。我们通过使用c3P0的JMX接口发现,发现应用程序没有返回连接,并且测试查询c3p0.preferredTestQuery也很糟糕,因此所有测试的连接都被删除了。

在其他情况下,这可能是由数据库端的关闭连接引起的,但在这种情况下池应该能够重新连接。

答案 1 :(得分:0)

我遇到了类似的问题,虽然不完全相同,因为较旧的Oracle JDBC驱动程序ojdbc14-10.2.0.2.0.jar和较新的ojdbc7-12.1.0.2.jar都在类路径上。删除旧的(ojdbc14)驱动程序后,问题就解决了。

我们的错误讯息是

WARN  [3048  ] - com.mchange.v2.c3p0.impl.NewPooledConnection: [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
WARN  [3048  ] - com.mchange.v2.c3p0.impl.NewPooledConnection: [c3p0] Another error has occurred [ java.sql.SQLException: Numeric Overflow ] which will not be reported to listeners!
java.sql.SQLException: Numeric Overflow
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125) ~[ojdbc14-10.2.0.2.0.jar:"Oracle JDBC Driver version - 10.1.0.2.0"]
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162) ~[ojdbc14-10.2.0.2.0.jar:"Oracle JDBC Driver version - 10.1.0.2.0"]
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227) ~[ojdbc14-10.2.0.2.0.jar:"Oracle JDBC Driver version - 10.1.0.2.0"]
    at oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:6797) ~[ojdbc14-10.2.0.2.0.jar:"Oracle JDBC Driver version - 10.1.0.2.0"]
    at oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:121) ~[ojdbc14-10.2.0.2.0.jar:"Oracle JDBC Driver version - 10.1.0.2.0"]
    at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:489) ~[ojdbc14-10.2.0.2.0.jar:"Oracle JDBC Driver version - 10.1.0.2.0"]
    at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1605) ~[ojdbc14-10.2.0.2.0.jar:"Oracle JDBC Driver version - 10.1.0.2.0"]
    at com.mchange.v2.c3p0.impl.NewProxyResultSet.getInt(NewProxyResultSet.java:451) [c3p0-0.9.5.2.jar:0.9.5.2]
    at org.hibernate.engine.jdbc.spi.TypeInfo.extractTypeInfo(TypeInfo.java:93) [hibernate-core-5.1.2.Final.jar:5.1.2.Final]
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.<init>(JdbcEnvironmentImpl.java:269) [hibernate-core-5.1.2.Final.jar:5.1.2.Final]