You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by James Green <ja...@gmail.com> on 2013/07/12 11:55:01 UTC

Further MySQL woes - possible timeouts again

One of our servers (our "live" environment) has "fallen over" two days in a
row. It seems to be something to do with the MySQL connectivity being lost.

Caused by:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No
operations allowed after connection closed.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1014)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
        at
com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1290)
        at
com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1282)
        at
com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5236)
        at sun.reflect.GeneratedMethodAccessor139.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
        at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
        at
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
        at com.sun.proxy.$Proxy109.setAutoCommit(Unknown Source)
        at
org.apache.openejb.resource.jdbc.managed.local.LocalXAResource.start(LocalXAResource.java:66)
        ... 76 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure

The last packet successfully received from the server was 35,780,425
milliseconds ago. The last packet sent successfully to the server was 1
milliseconds ago.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3603)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3492)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4043)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)
        at
com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5282)
        ... 84 more
Caused by: java.io.EOFException: Can not read response from server.
Expected to read 4 bytes, read 0 bytes before connection was unexpectedly
lost.
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3052)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3503)
        ... 90 more

Reading around this is quite common although I've so far failed to
reproduce on internal kit. I am however trying to configure the tomee.xml
Resource instances to validate the connection with a query and set up
testing of idle pooled connections. So far I have as follows:

<Resource id="jdbc/accounts" type="DataSource">
  JdbcDriver com.mysql.jdbc.Driver
  JdbcUrl jdbc:mysql://saas-dispatch.qa.int/account
  UserName saas
  Password saas
  JtaManaged true
  ConnectionProperties zeroDateTimeBehavior=convertToNull
  DataSourceCreator = tomcat
  # See also http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
  driverClassName = com.mysql.jdbc.Driver
  validationQuery = SELECT 1
  jmxEnabled = true # specific to tomcat pooling
  logAbandoned = true # During low volumes only
  testWhileIdle = true
</Resource>

Is there anything else I should be looking at to close this issue down?

Behaviourally it fails on the first invocation of a connection that was
last used several hours previously. We know this because our connections go
idle overnight.

Unfortunately the only way to wake our server up is to restart TomEE once
this exception has been thrown so obviously it needs fixing.

Thanks,

James

Re: Further MySQL woes - possible timeouts again

Posted by Anthony Fryer <ap...@hotmail.com>.
Maybe try the autoReconnect=true option at the end of the JdbcUrl

eg.

<Resource id="MySQL Database" type="DataSource">
  JdbcDriver                  com.mysql.jdbc.Driver
  JdbcUrl                      
jdbc:mysql://localhost:3306/lemonadeStand?autoReconnect=true
  UserName                   lc
  Password                   lc
  JtaManaged                true
  MaxActive                  10
  MaxIdle                      5
  MinIdle                       5
  TimeBetweenEvictionRunsMillis	600000
  NumTestsPerEvictionRun        5
  ValidationQuery               select 1
  TestWhileIdle                 true
</Resource>



--
View this message in context: http://openejb.979440.n4.nabble.com/Further-MySQL-woes-possible-timeouts-again-tp4664233p4664236.html
Sent from the OpenEJB User mailing list archive at Nabble.com.