check if deadlocks are handled on posting (updating, deleting, ...)

Issue #918 open
Robert Jäschke created an issue

The old posting code had a loop to retry posting (only) when a deadlock happened. How are deadlocks handled in the new code? Please try to implement some handling for deadlocks.

Comments (7)

  1. Stephan Doerfel

    Grepped through the bibsonomy2-errors.log s in 07/2013. The problem occurs seemingly only at u

    [2013-07-19 08:22:18,956] [ERROR] [org.bibsonomy.database.common.impl.DBSessionImpl] - Couldn't execute query 'updateGroupIds' - throwing RuntimeException com.ibatis.common.jdbc.exception.NestedSQLException:
    --- The error occurred while applying a parameter map.
    --- Check the updateGroupIds-InlineParameterMap.
    --- Check the statement (update failed).
    --- Cause: com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction com.ibatis.common.jdbc.exception.NestedSQLException:
    --- The error occurred while applying a parameter map.
    --- Check the updateGroupIds-InlineParameterMap.
    --- Check the statement (update failed).
    --- Cause: com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:457) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90) at org.bibsonomy.database.common.impl.DBSessionImpl.update(DBSessionImpl.java:246) at org.bibsonomy.database.common.AbstractDatabaseManager.update(AbstractDatabaseManager.java:105) at org.bibsonomy.database.managers.AdminDatabaseManager.flagSpammer(AdminDatabaseManager.java:223) at org.bibsonomy.database.managers.AdminDatabaseManager.flagSpammer(AdminDatabaseManager.java:182) at org.bibsonomy.database.DBLogic.updateUser(DBLogic.java:1462) at org.bibsonomy.rest.strategy.users.PutUserStrategy.update(PutUserStrategy.java:50) at org.bibsonomy.rest.strategy.AbstractUpdateStrategy.perform(AbstractUpdateStrategy.java:26) at org.bibsonomy.rest.strategy.Context.perform(Context.java:165) at org.bibsonomy.rest.RestServlet.handle(RestServlet.java:275) at org.bibsonomy.rest.RestServlet.doPut(RestServlet.java:206) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.bibsonomy.webapp.util.spring.controller.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:90) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:800) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.bibsonomy.webapp.filters.NoCacheFilter.doFilter(NoCacheFilter.java:62) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at filters.ActionValidationFilter.doFilter(ActionValidationFilter.java:65) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:186) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.bibsonomy.webapp.filters.ContentNegotiationFilter.doFilter(ContentNegotiationFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.bibsonomy.webapp.filters.ContextPathFilter.doFilter(ContextPathFilter.java:163) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) Caused by: com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:941) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) at com.mysql.jdbc.Connection.execSQL(Connection.java:3283) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:882) at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169) at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:80) at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteUpdate(MappedStatement.java:216) at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:94) ... 69 more

  2. Stephan Doerfel

    Vollständig: Grepped through the bibsonomy2-errors.log s in 07/2013. The problem occurs seemingly only at "updateGroupIds". This is actually one of the few update statements we have (and thus a potential candidate for deadlocks).

  3. Stephan Doerfel

    The problem with updateGroupIds still occurs frequently. (see log files)

    [2015-06-08 08:35:47,398] [ERROR] [org.bibsonomy.database.common.impl.DBSessionImpl] - Couldn't execute query 'updateGroupIds' - throwing RuntimeException com.ibatis.common.jdbc.exception.NestedSQLException:
    --- The error occurred while applying a parameter map.
    --- Check the updateGroupIds-InlineParameterMap.
    --- Check the statement (update failed).
    --- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction com.ibatis.common.jdbc.exception.NestedSQLException:
    --- The error occurred while applying a parameter map.

  4. Log in to comment