java.sql.SQLRecoverableException: IO Error: Connection reset error

When the application is running, after a certain interval the read/write SQL queries fail due to the java.sql.SQLRecoverableException: IO Error: Connection reset error.

Symptoms

Following is an example of the stack trace:
2017-12-06 20:02:49,711 [sch_worker_0] ERROR
com.ibm.ccd.common.db.Query JOB_ID:2203- CWPCM0040E:The query
failed : [ Static Query [name:
GEN_DOC_DHI_DOC_HIERARCHY_GETBYPATH]
[id: 681]
SELECT *
FROM tdoc_dhi_doc_hierarchy
WHERE dhi_cmp_id = 1
  AND dhi_doc_path = '/scripts/reports/Matt report'], Exception:IO Error: Connection reset
java.sql.SQLRecoverableException: IO Error: Connection reset
     at
oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:790)
     at
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
     at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
     at
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
     at
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845)
     at
oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501)
     at
org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
     at
org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
     at com.ibm.ccd.common.db.Query.execute(Query.java:982)
     at com.ibm.ccd.common.db.Query.execute(Query.java:858)
     at com.ibm.ccd.common.db.Query.execute(Query.java:824)
     at com.ibm.ccd.common.db.Query.execute(Query.java:806)
     at
com.ibm.ccd.common.gendb.GenDocDhiDocHierarchyTable.getByPath(GenDocDhiDocHierarchyTable.java:615)
     at com.ibm.ccd.docstore.common.Doc$3.run(Doc.java:423)
     at
com.ibm.ccd.common.context.common.DBContext.runInNewDBContext(DBContext.java:1392)
     at com.ibm.ccd.docstore.common.Doc.get(Doc.java:418)
     at
com.ibm.ccd.docstore.common.DocStoreMgr.get(DocStoreMgr.java:67)
     at
com.ibm.ccd.docstore.common.DocStoreMgr.get(DocStoreMgr.java:62)
     at
com.ibm.ccd.docstore.common.DocStoreMgr.get(DocStoreMgr.java:54)
     at com.ibm.ccd.report.common.Report.<init>(Report.java:105)
     at
com.ibm.ccd.report.common.ReportMgr.buildReport(ReportMgr.java:64)
     at
com.ibm.ccd.report.common.ReportMgr.buildReport(ReportMgr.java:79)
     at
com.ibm.ccd.report.common.ReportMgr.getReportById(ReportMgr.java:106)
     at
com.ibm.ccd.report.common.ReportExe.execute(ReportExe.java:97)
     at
com.ibm.ccd.scheduler.threads.SchedulerThread.fuzaoRun(SchedulerThread.java:262)
     at
com.ibm.ccd.common.util.FuzaoRunnableAdapter.run(FuzaoRunnableAdapter.java:54)
     at
com.ibm.ccd.common.util.FuzaoThread.run(FuzaoThread.java:123)
Caused by: java.net.SocketException: Connection reset

Causes

Connection reset, the database connection drop-off can be influenced by the network.

Resolving the problem

The network administrator can check the following:
  1. Check whether there is a load balancer or gateway that can cause the connection to drop.
  2. Run a trace route command from the application server to the database server to check whether any hop is coming from a load balance.
  3. Check the network statistics with the netstat -rn command for a gateway that is present under the VLAN or network.