[Netarchivesuite-users] Recurring MySQL exception

nicolas.giraud at bnf.fr nicolas.giraud at bnf.fr
Tue May 12 11:14:12 CEST 2009


Hi,

I have noticed that when, coming back to the office in the morning, I 
refresh the "Harvest Status" page in the browser, or any other page, I get 
the following exception:

SQL error getting sparse harvests
SQLException trace:
SQL State:08003
Error Code:0
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No 
operations allowed after connection closed.Connection was implicitly 
closed due to underlying exception/error:


** BEGIN NESTED EXCEPTION ** 

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
MESSAGE: The last packet successfully received from the server was61494 
milliseconds ago.The last packet sent successfully to the server was 61494 
milliseconds ago, which  is longer than the server configured value of 
'wait_timeout'. You should consider either expiring and/or testing 
connection validity before use in your application, increasing the server 
configured values for client timeouts, or using the Connector/J connection 
property 'autoReconnect=true' to avoid this problem.

STACKTRACE:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet 
successfully received from the server was61494 milliseconds ago.The last 
packet sent successfully to the server was 61494 milliseconds ago, which 
is longer than the server configured value of 'wait_timeout'. You should 
consider either expiring and/or testing connection validity before use in 
your application, increasing the server configured values for client 
timeouts, or using the Connector/J connection property 
'autoReconnect=true' to avoid this problem.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
        at 
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3270)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1932)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
        at 
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
        at 
com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1912)
        at 
dk.netarkivet.harvester.datamodel.HarvestDefinitionDBDAO.getAllSparsePartialHarvestDefinitions(HarvestDefinitionDBDAO.java:859)
        at 
org.apache.jsp.Definitions_002dselective_002dharvests_jsp._jspService(org.apache.jsp.Definitions_002dselective_002dharvests_jsp:143)
        at 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
        at 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)
        at 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:364)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
        at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
        at 
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
        at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
        at 
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at 
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at 
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at 
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
Caused by: java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at 
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at 
java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at 
java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3251)
        ... 29 more


** END NESTED EXCEPTION **


        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
        at com.mysql.jdbc.Util.getInstance(Util.java:381)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
        at 
com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1115)
        at 
com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4111)
        at 
com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4077)
        at 
dk.netarkivet.harvester.datamodel.HarvestDefinitionDBDAO.getAllSparsePartialHarvestDefinitions(HarvestDefinitionDBDAO.java:843)
        at 
org.apache.jsp.Definitions_002dselective_002dharvests_jsp._jspService(org.apache.jsp.Definitions_002dselective_002dharvests_jsp:143)
        at 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
        at 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)
        at 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:364)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
        at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
        at 
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
        at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
        at 
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at 
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at 
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at 
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

If I refresh several times, the exception occurs randomly, sometimes the 
page displays properly, sometimes not. The exception keeps popping 
randomly until I restart the GUIApplication.

It would seem that the connection wait timeout is not deactivated, and 
that connections to the MySQL database stay open for too long (which is 
weird are not connections limited to one HTTP request?). I have thought of 
adding the autoReconnect parameter to the JDBC URL, but this would not be 
clean.

Is this a known bug?

Nicolas




Avant d'imprimer, pensez à l'environnement. 
Consider the environment before printing this mail.   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ml.sbforge.org/pipermail/netarchivesuite-users/attachments/20090512/5510b226/attachment-0002.html>


More information about the NetarchiveSuite-users mailing list