Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

'java.sql.SQLRecoverableException: IO Error: Operation interrupted' after updating the Oracle Driver

dobrikovAug 30 2018 — edited Aug 30 2018

I recently updated our Oracle JDB driver to 12.2.0.1.0.

After the update we just get some errors from the Oracle driver that we haven't experienced yet, and I haven't found a discussion pointing how to solve this.

The application that we develop in our company has a dispatcher that manages the execution of different jobs.

The jobs can open connections to the data base and perform some SQL queries on it (and then of course close the connections).

The jobs are executed in parallel (using a fork mechanism).

Of course, there is a maximum of jobs that can be executed in parallel.

If a job is not executed at the moment, it waits for being executed.

The ordering of which jobs can be executed is managed using a Queue.

The error below occurs under the following circumstances: the dispatcher executes in parallel the maximum number of jobs allowed to run simultaneously and there are jobs waiting to be executed.

In the moment in which a waiting job is going to be started (that means a running job is finished and a new can be started) the following error occurs:

Caused by: de.fact.first.process.data.ProcessDataException:
java
.sql.SQLRecoverableException: IO Error: Operation interrupted
at
JobDataFactoryImplJDBC
.getByJobId(JobDataFactoryImplJDBC.java:210)
... 19 more
Caused
by: java.sql.SQLRecoverableException: IO Error: Operation interrupted
at oracle
.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:761)
at oracle
.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:904)
at oracle
.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1082)
at oracle
.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780)
at oracle
.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343)
at oracle
.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3822)
at oracle
.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1165)
at org
.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
at org
.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
at
JobDataFactoryImplJDBC.getByJobId(JobDataFactoryImplJDBC.java:205)
... 19 more
Caused
by: java.io.InterruptedIOException: Operation interrupted
at oracle
.net.nt.TimeoutSocketChannel.handleInterrupt(TimeoutSocketChannel.java:311)
at oracle
.net.nt.TimeoutSocketChannel.write(TimeoutSocketChannel.java:221)
at oracle
.net.ns.NIOPacket.writeToSocketChannel(NIOPacket.java:211)
at oracle
.net.ns.NIONSDataChannel.writeDataToSocketChannel(NIONSDataChannel.java:181)
at oracle
.net.ns.NIONSDataChannel.writeDataToSocketChannel(NIONSDataChannel.java:132)
at oracle
.jdbc.driver.T4CMAREngineNIO.prepareForReading(T4CMAREngineNIO.java:96)
at oracle
.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:534)
at oracle
.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:485)
at oracle
.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
at oracle
.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612)
at oracle
.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226)
at oracle
.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59)
at oracle
.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:747)
... 28 more

My first thought was that maybe the application exceeds the number of connections and therefore Oracle interrupts the connections.

This was not the problem, as I increased the number of processes (and sessions) and additionally distributed_lock_timeout.

Even after adjusting these options, the problem still occurs.

There are no connection kept open by the waiting jobs.

For sure I can say that the error occurs only in the new Oracle driver, the issue is not reproducible in the old one (12.1.0.1.0).

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 27 2018
Added on Aug 30 2018
1 comment
2,882 views