gpt4 book ai didi

MySQLNonTransientConnectionException : Communications link failure during commit with mysql and mongodb in grails-2. 2.2

转载 作者:行者123 更新时间:2023-11-30 00:22:22 25 4
gpt4 key购买 nike

我正在使用 Grails 2.2.2 和 MySql。对于我的几个域,我决定在没有数据库的情况下使用 Polygot,并将 Mongo 引入其中。此更改投入生产时没有任何问题,并且运行了 12 个小时以上。

但是突然我们开始在日志中收到此异常:

caused by org.hibernate.TransactionException: JDBC commit failed
com.sonyliv.common.VideoService.getRequestIp(VideoService.groovy:1301)
com.sonyliv.portal.ApplicationFilters$_closure1_closure2_closure5.doCall(ApplicationFilters.groovy:14)
…in.cache.web.filter.PageFragmentCachingFilter.doFilter (PageFragmentCachingFilter.java:195)
grails.plugin.cache.web.filter.AbstractFilter.doFilter (AbstractFilter.java:63)
com.brandseye.cors.CorsFilter.doFilter (CorsFilter.java:69)
….javakaffee.web.msm.RequestTrackingContextValve.invoke (RequestTrackingContextValve.java:99)
de.javakaffee.web.msm.RequestTrackingHostValve.invoke (RequestTrackingHostValve.java:151)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
java.lang.Thread.run (Thread.java:724)

caused by com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during commit(). Transaction resolution unknown.
com.mysql.jdbc.Util.handleNewInstance (Util.java:411)
com.mysql.jdbc.Util.getInstance (Util.java:386)
com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1014)
com.mysql.jdbc.SQLError.createSQLException (SQLError.java:988)
com.mysql.jdbc.SQLError.createSQLException (SQLError.java:974)
com.mysql.jdbc.SQLError.createSQLException (SQLError.java:919)
com.mysql.jdbc.ConnectionImpl.commit (ConnectionImpl.java:1700)
org.apache.commons.dbcp.DelegatingConnection.commit (DelegatingConnection.java:334)
…cp.PoolingDataSource$PoolGuardConnectionWrapper.commit (PoolingDataSource.java:211)
com.sonyliv.common.VideoService.getRequestIp(VideoService.groovy:1301)
com.sonyliv.portal.ApplicationFilters$_closure1_closure2_closure5.doCall(ApplicationFilters.groovy:14)
…in.cache.web.filter.PageFragmentCachingFilter.doFilter (PageFragmentCachingFilter.java:195)
grails.plugin.cache.web.filter.AbstractFilter.doFilter (AbstractFilter.java:63)
com.brandseye.cors.CorsFilter.doFilter (CorsFilter.java:69)
….javakaffee.web.msm.RequestTrackingContextValve.invoke (RequestTrackingContextValve.java:99)
de.javakaffee.web.msm.RequestTrackingHostValve.invoke (RequestTrackingHostValve.java:151)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)

java.lang.Thread.run (Thread.java:724)

但是,我们仍然能够使用数据源设置从生产服务器登录 mysql。我尝试重新启动应用程序,但这也没有帮助。最后,我不得不恢复到 mongo 之前的版本才能让一切再次正常工作。

有人知道为什么会发生这种情况吗? Grails 2.2.2 + Mysql + mongo 是否存在已知问题。我一直在试图找出答案,但仍然没有得到任何具体的信息。各种技术的版本:

蒙戈 - 2.4.8

Grails Mongo 插件 - 1.3.3

Mysql - 5.5.33

Tomcat 7

Grails - 2.2.2

提前致谢。

最佳答案

我有一种强烈的感觉,您的 VideoService 类没有声明 static transactional = false,这意味着调用的每个方法都将获取并保存一个数据库事务,无论它是是否进行任何数据库调用。如果您遇到任何内存泄漏或性能问题,这些问题会随着时间线性恶化,最终这些方法将开始在连接超时后保持数据库打开,并且您会得到这样的结果。

关于MySQLNonTransientConnectionException : Communications link failure during commit with mysql and mongodb in grails-2. 2.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23127814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com