BlocklyProp icon indicating copy to clipboard operation
BlocklyProp copied to clipboard

Database I/O layer is not detecting a failed DB connection

Open pjewald opened this issue 8 years ago • 0 comments

There are a number of methods that do not check or trap database I/O issues. This is particularly difficult if the database server is unavailable. The client browser receives a tomcat error page. This is much more likely to happen on development machines that have remained idle for more that 12 - 16 hours.

The prevailing theory is that the database connection times out and is silently closed by the database server. The BlocklyProp app is not detecting this closure properly and is not re-establishing a connection when the next database service request is processed.

HTTP Status 500 - org.jooq.exception.DataAccessException: SQL [insert into `blocklyprop`.`session` (`idsession`, `startTimestamp`, `lastAccessTime`, `timeout`, `host`, `attributes`) values (?, ?, ?, ?, ?, ?)]; No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:

type Exception report

message org.jooq.exception.DataAccessException: SQL [insert into `blocklyprop`.`session` (`idsession`, `startTimestamp`, `lastAccessTime`, `timeout`, `host`, `attributes`) values (?, ?, ?, ?, ?, ?)]; No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.jooq.exception.DataAccessException: SQL [insert into `blocklyprop`.`session` (`idsession`, `startTimestamp`, `lastAccessTime`, `timeout`, `host`, `attributes`) values (?, ?, ?, ?, ?, ?)]; No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:238)
at com.parallax.server.blocklyprop.utils.ServletUtils.getLocale(ServletUtils.java:28)
at com.parallax.server.blocklyprop.servlets.TextileIndexServlet.doGet(TextileIndexServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)

pjewald avatar Jan 26 '17 18:01 pjewald