BlocklyProp
BlocklyProp copied to clipboard
Database I/O layer is not detecting a failed DB connection
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)