Hello Filip,

Over the weekend my application appears to have lost connectivity to its
MySQL server.  At that point in my logs I see these errors:

2012-03-16 18:25:18,248  ERROR [pool-3-thread-201]
c.l.c.s.e.EventServiceImpl failed to store event
[com.lim.cd.service.event.beans.SubscribeEvent@730c434d]
org.springframework.dao.RecoverableDataAccessException:
PreparedStatementCallback; SQL [insert into sessions (session_id,
username, uuid, created) values (?, ?, ?, ?)]; Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server.; nested
exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure
(... a lot omitted ...)
Caused by: java.net.ConnectException: Connection timed out

(the whole stack trace is long, I'll post it at the end.)

This error appeared over and over again for 2 hours and every MySQL
request failed.  After restarting Tomcat the app was able to connect to
MySQL and functioned normally.  This is the first and only time I've
seen this happen.

Assuming this was a brief network or MySQL outage (the sys admins
haven't said either way), I would expect the connection pool to handle
the situation by destroying these dead connections and creating new ones
automatically once database connectivity was restored.  That never
happened (until we restarted Tomcat.)

So my thought was to turn up the logging on the connection pool and try
to see what's going on.  I couldn't find any log output from the pool in
my logs or in the Tomcat logs directory.

My application uses Spring JDBC and Spring's @Transaction annotations so
my code does not directly interact with the DataSource or the jdbc
Connections.

I suspect a misconfiguration on my part but I need to know what is
actually failing before I can figure out what's wrong.

Any advice greatly appreciated.

Thanks,
Colin

full stack trace:
2012-03-16 18:25:18,248  ERROR [pool-3-thread-201]
c.l.c.s.e.EventServiceImpl failed to store event
[com.lim.cd.service.event.beans.SubscribeEvent@730c434d]
org.springframework.dao.RecoverableDataAccessException:
PreparedStatementCallback; SQL [insert into sessions (session_id,
username, uuid, created) values (?, ?, ?, ?)]; Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server.; nested
exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server.
     at
org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:98)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:602)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:811)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:867)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:875)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
com.lim.cd.service.event.dao.MySqlEventDao.createSession(MySqlEventDao.java:201)
~[MySqlEventDao.class:na]
     at
com.lim.cd.service.event.dao.MySqlEventDao.createOrUpdateSession(MySqlEventDao.java:191)
~[MySqlEventDao.class:na]
     at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
~[na:na]
     at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
~[na:1.6.0_29]
     at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
     at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
~[spring-aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
~[spring-aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
~[spring-aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
~[spring-tx-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
~[spring-aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
~[spring-aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at $Proxy26.createOrUpdateSession(Unknown Source) ~[na:na]
     at
com.lim.cd.service.event.EventServiceImpl$1.run(EventServiceImpl.java:94)
~[EventServiceImpl$1.class:na]
     at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
[na:1.6.0_29]
     at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
[na:1.6.0_29]
     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
[na:1.6.0_29]
     at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[na:1.6.0_29]
     at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[na:1.6.0_29]
     at java.lang.Thread.run(Thread.java:662) [na:1.6.0_29]
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server.
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) ~[na:1.6.0_29]
     at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
~[na:1.6.0_29]
     at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
~[na:1.6.0_29]
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
~[na:1.6.0_29]
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at
com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at sun.reflect.GeneratedConstructorAccessor101.newInstance(Unknown
Source) ~[na:na]
     at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
~[na:1.6.0_29]
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
~[na:1.6.0_29]
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at
org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:267)
~[tomcat-jdbc-1.1.0.1.jar:na]
     at
org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:176)
~[tomcat-jdbc-1.1.0.1.jar:na]
     at
org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:653)
~[tomcat-jdbc-1.1.0.1.jar:na]
     at
org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:595)
~[tomcat-jdbc-1.1.0.1.jar:na]
     at
org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:174)
~[tomcat-jdbc-1.1.0.1.jar:na]
     at
org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:111)
~[tomcat-jdbc-1.1.0.1.jar:na]
     at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
~[na:na]
     at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
~[na:1.6.0_29]
     at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
     at net.bull.javamelody.JdbcWrapper$4.invoke(JdbcWrapper.java:660)
~[javamelody-core-1.34.0.jar:1.34.0]
     at
net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:232)
~[javamelody-core-1.34.0.jar:1.34.0]
     at $Proxy4.getConnection(Unknown Source) ~[na:na]
     at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
~[na:na]
     at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
~[na:1.6.0_29]
     at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
     at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
~[spring-aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
~[spring-aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at $Proxy13.getConnection(Unknown Source) ~[na:na]
     at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
~[na:na]
     at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
~[na:1.6.0_29]
     at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
     at net.bull.javamelody.JdbcWrapper$4.invoke(JdbcWrapper.java:660)
~[javamelody-core-1.34.0.jar:1.34.0]
     at
net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:232)
~[javamelody-core-1.34.0.jar:1.34.0]
     at $Proxy21.getConnection(Unknown Source) ~[na:na]
     at
org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy$LazyConnectionInvocationHandler.getTargetConnection(LazyConnectionDataSourceProxy.java:403)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy$LazyConnectionInvocationHandler.invoke(LazyConnectionDataSourceProxy.java:376)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at $Proxy28.prepareStatement(Unknown Source) ~[na:na]
     at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
~[na:na]
     at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
~[na:1.6.0_29]
     at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
     at
net.bull.javamelody.JdbcWrapper$ConnectionInvocationHandler.invoke(JdbcWrapper.java:176)
~[javamelody-core-1.34.0.jar:1.34.0]
     at
net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:232)
~[javamelody-core-1.34.0.jar:1.34.0]
     at $Proxy29.prepareStatement(Unknown Source) ~[na:na]
     at
org.springframework.jdbc.core.JdbcTemplate$SimplePreparedStatementCreator.createPreparedStatement(JdbcTemplate.java:1375)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:580)
~[spring-jdbc-3.0.5.RELEASE.jar:3.0.5.RELEASE]
     ... 22 common frames omitted
Caused by: java.net.ConnectException: Connection timed out
     at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.6.0_29]
     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
~[na:1.6.0_29]
     at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
~[na:1.6.0_29]
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
~[na:1.6.0_29]
     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
~[na:1.6.0_29]
     at java.net.Socket.connect(Socket.java:529) ~[na:1.6.0_29]
     at java.net.Socket.connect(Socket.java:478) ~[na:1.6.0_29]
     at java.net.Socket.<init>(Socket.java:375) ~[na:1.6.0_29]
     at java.net.Socket.<init>(Socket.java:218) ~[na:1.6.0_29]
     at
com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
~[mysql-connector-java-5.1.17-bin.jar:na]
     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
~[mysql-connector-java-5.1.17-bin.jar:na]
     ... 68 common frames omitted







On 03/20/2012 10:29 AM, Filip Hanik (mailing lists) wrote:

Define "connection timeouts" so that we can understand your problem to
suggest for how to trace it down.
What are you trying to search for. Errors would be logged as errors, and
should show up with the standard configuration

Filip


-----Original Message-----
From: Colin Ingarfield [mailto:colin...@gmail.com <colin...@gmail.com>]
Sent: Monday, March 19, 2012 1:51 PM
To: users@tomcat.apache.org
Subject: how to enable debug logging for Tomcat jdbc pool (Tomcat 6.0.32)

Hello,

I'm using the new Tomcat jdbc pool (1.1.0.1) with Tomcat 6.0.32, Ubuntu
x86_64.  I would like to increase the logging from the pool to try and
chase down connection timeouts.

I added the following line to $CATALINA_BASE/conf/logging.properties:
org.apache.tomcat.jdbc.pool.level=FINE

(the rest of the logging.properties file is unchanged.)

But I don't see any pool debug logging output on the console.  I thought
this setting would enable debug logging for all classes in that package.
Is there something else I need to do?

Thank you,
Colin

Reply via email to