Сбой канала связи во время фиксации(). Разрешение транзакции неизвестно

Привет всем, мы разработали приложение J2EE, которое может выполнять хранимую процедуру для получения данных из баз данных. Раньше он работал нормально, прежде чем мы обновили нашу версию MySql с 5.5 до 5.6 теперь я получаю Communications link failure during commit() и я не уверен, что эта ошибка связана с обновлением mysql или нет . Я уже потратил неделю, чтобы решить эту проблему.

ПРИМЕЧАНИЕ. Кроме того, когда я перезапускаю свое приложение и mysql, оно некоторое время работает нормально, а затем начинает выдавать следующее исключение.

Фреймворк, который мы используем

Spring 3.0.1
Hibernate 3.3

Только что обновлены следующие вещи

C3P0 (Previous Version 9.1.2)
c3p0-0.9.5-pre8.jar 
c3p0-oracle-thin-extras-0.9.5-pre8.jar
mchange-commons-java-0.2.7.jar
Connector/J (Previous Version 5.1.7)
mysql-connector-java-5.1.30-bin.jar

Конфигурация C3P0

initialPoolSize=10
maxPoolSize=30
minPoolSize=5
acquireIncrement=3
acquireRetryAttempts=0
preferredTestQuery=SELECT 1
idleConnectionTestPeriod=600
numHelperThreads=10
testConnectionOnCheckout=true
maxIdleTime=300

Свойства JDBC

DriverClassName=com.mysql.jdbc.Driver
Url=jdbc:mysql://localhost:3306/mydatabase?useOldAliasMetadataBehavior=true&autoReconnect=true
Username=root
Password=

Сообщение об ошибке

ERROR org.hibernate.transaction.JDBCTransaction#toggleAutoCommit  - Could not toggle autocommit
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
        at sun.reflect.GeneratedConstructorAccessor56.newInstance(Unknown Source)
        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.reuseAndReadPacket(MysqlIO.java:3009)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2895)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3438)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
        at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4916)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:912)
        at org.hibernate.transaction.JDBCTransaction.toggleAutoCommit(JDBCTransaction.java:194)
        at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:142)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:115)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:412)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)
        at com.report.service.servk$$EnhancerByCGLIB$$dd20ff76.l(<generated>)
        at com.report.controller.contbg.c(UserDashboardController.java:296)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
        at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.report.filter.SessionFilter.doFilter(SessionFilter.java:69)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.report.filter.GUIDFilter.doFilter(GUIDFilter.java:38)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
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:2455)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2906)

Когда я выполняю следующий запрос, чтобы проверить открытое соединение с моей базой данных

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "mydatabase";

Он показывает мне все запросы, выполненные моим приложением, следующим образом

| ID  | USER     | HOST            | DB         | COMMAND | TIME | STATE               |INFO                      | TIME_MS | ROWS_SENT | ROWS_EXAMINED |
| 881 | root     | %:59283         | mydatabase | Query   | 1483 | Creating sort index | MY Query in Stored Procedure | 1482838 |         0 |             0 |
...
20 rows in set (0.42 sec)

Я бросил следующие ссылки, но так и не смог найти решение

Автоматическое повторное подключение из Hibernate к MySQL

Ссылка на стек

Может ли кто-нибудь помочь решить эту проблему, или любая полезная ссылка или шаги по отладке будут оценены

Заранее спасибо...


person Ashish Jagtap    schedule 15.04.2014    source источник
comment
вы проверяли журнал сервера? похоже, автокоммит был отправлен, но потом что-то случилось, возможно, сбой сервера...   -  person Jess Balint    schedule 15.04.2014
comment
@ Джесс Балинт, спасибо за ваш ответ ... Да, я знаю, что что-то происходит, но как я могу знать, что это происходит ...?   -  person Ashish Jagtap    schedule 16.04.2014


Ответы (1)


Нестабильность сети

снова появится код: con.query() sleep(10) //when sleep shutdown your network conn.roolback()

person Karl LI    schedule 17.06.2015