javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement: org.keycloak.models.ModelException: javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement

jboss.org | 4 months ago
  1. 0

    [keycloak-user] db deadlock in concurrence environment

    jboss.org | 4 months ago
    javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement: org.keycloak.models.ModelException: javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement
  2. 0

    [keycloak-user] db deadlock in concurrence environment

    jboss.org | 4 months ago
    javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement
  3. 0

    A TaskletStep uses various helpers to loop over all chunks to be processed and process each of them in a separate transaction while managing things such as skippable and retryable exceptions. In pseudo code this whole system can be summarized as follows: {code:java} while (more chunks) { // RepeatTemplate usage in TaskletStep.doExecute try { // RepeatTemplate.executeInternal try { // StepContextRepeatCallback.doInIteration chunkContext = queue.poll() { // TaskletStep: StepContextRepeatCallback.doInChunkContext try { // TransactionTemplate.execute { // TaskletStep: ChunkTransactionCallback.doInTransaction { // ChunkOrientedTasklet.execute chunk = chunkProvider.provide() chunkProcessor.process(chunk) [A] chunkContext.setComplete() return RepeatStatus.continueIf(!chunk.isEnd()) } } } catch (Exception e) { rollback() } commit() [B] } } finally { if (!chunkContext.isComplete()) { queue.add(chunkContext) } } } catch (Exception e) { { // SimpleRetryExceptionHandler.handleException if (exception is fatal) { throw e; } } } } {code} This code exhibits the following type of behavior: * If no exceptions occur during chunk processing, the chunk is marked as complete and the transaction commits. Since the chunk its complete it is not pushed back on the queue and the repeat loop ends normally. * A non-fatal (i.e. retryable) exception that is thrown while processing the chunk (point [A]) will cause the chunk not to be marked complete and the transaction to rollback. Since the chunk is not complete its pushed back onto the queue of chunks to process. Furthermore, since the exception is not fatal it will be ignored by the RepeatTemplate and a new iteration will start, actually doing the retry. So far so good. However, we're experiencing the following case: * No exceptions occur during chunk processing. Consequently the chunk is marked as complete. Now an exception is thrown during transaction commit (point [B]). Since the chunk is already marked as complete the chunk is not pushed back on the queue and no retry is attempted. The commit failure caused correct chunk transaction rollback. However, since the exception is not deemed to be fatal it is silently ignored by the RepeatTemplate! *End result: the batch completes normally but certain chunks were silently skipped!* The exception we get is (see also BATCH-2403): {code} 2015-08-06 13:53:04.440 DEBUG o.s.b.c.s.i.SimpleRetryExceptionHandler - Handled non-fatal exception javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.ejb.AbstractEntityManagerImpl$CallbackExceptionMapperImpl.mapManagedFlushFailure(AbstractEntityManagerImpl.java:1510) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:110) ~[hibernate-core-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:53) ~[hibernate-core-4.2.12.Final.jar:4.2.12.Final] at bitronix.tm.BitronixTransaction.fireBeforeCompletionEvent(BitronixTransaction.java:478) ~[btm-2.1.2.jar:2.1.2] at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:193) ~[btm-2.1.2.jar:2.1.2] at bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:120) ~[btm-2.1.2.jar:2.1.2] at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1012) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:148) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:267) ~[spring-batch-core-2.2.7.RELEASE.jar:na] at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:77) ~[spring-batch-core-2.2.7.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:368) [spring-batch-infrastructure-2.2.7.RELEASE.jar:na] ... Caused by: org.hibernate.exception.LockAcquisitionException: could not execute statement at org.hibernate.dialect.MySQLDialect$1.convert(MySQLDialect.java:412) ~[hibernate-core-4.2.12.Final.jar:4.2.12.Final] ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_05] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_05] ... {code} I fail to see how that can be desired behavior. Or am I just missing something here?

    Spring JIRA | 1 year ago | Erwin Vervaet
    javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement
  4. Speed up your debug routine!

    Automated exception search integrated into your IDE

  5. 0

    A TaskletStep uses various helpers to loop over all chunks to be processed and process each of them in a separate transaction while managing things such as skippable and retryable exceptions. In pseudo code this whole system can be summarized as follows: {code:java} while (more chunks) { // RepeatTemplate usage in TaskletStep.doExecute try { // RepeatTemplate.executeInternal try { // StepContextRepeatCallback.doInIteration chunkContext = queue.poll() { // TaskletStep: StepContextRepeatCallback.doInChunkContext try { // TransactionTemplate.execute { // TaskletStep: ChunkTransactionCallback.doInTransaction { // ChunkOrientedTasklet.execute chunk = chunkProvider.provide() chunkProcessor.process(chunk) [A] chunkContext.setComplete() return RepeatStatus.continueIf(!chunk.isEnd()) } } } catch (Exception e) { rollback() } commit() [B] } } finally { if (!chunkContext.isComplete()) { queue.add(chunkContext) } } } catch (Exception e) { { // SimpleRetryExceptionHandler.handleException if (exception is fatal) { throw e; } } } } {code} This code exhibits the following type of behavior: * If no exceptions occur during chunk processing, the chunk is marked as complete and the transaction commits. Since the chunk its complete it is not pushed back on the queue and the repeat loop ends normally. * A non-fatal (i.e. retryable) exception that is thrown while processing the chunk (point [A]) will cause the chunk not to be marked complete and the transaction to rollback. Since the chunk is not complete its pushed back onto the queue of chunks to process. Furthermore, since the exception is not fatal it will be ignored by the RepeatTemplate and a new iteration will start, actually doing the retry. So far so good. However, we're experiencing the following case: * No exceptions occur during chunk processing. Consequently the chunk is marked as complete. Now an exception is thrown during transaction commit (point [B]). Since the chunk is already marked as complete the chunk is not pushed back on the queue and no retry is attempted. The commit failure caused correct chunk transaction rollback. However, since the exception is not deemed to be fatal it is silently ignored by the RepeatTemplate! *End result: the batch completes normally but certain chunks were silently skipped!* The exception we get is (see also BATCH-2403): {code} 2015-08-06 13:53:04.440 DEBUG o.s.b.c.s.i.SimpleRetryExceptionHandler - Handled non-fatal exception javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.ejb.AbstractEntityManagerImpl$CallbackExceptionMapperImpl.mapManagedFlushFailure(AbstractEntityManagerImpl.java:1510) ~[hibernate-entitymanager-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:110) ~[hibernate-core-4.2.12.Final.jar:4.2.12.Final] at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:53) ~[hibernate-core-4.2.12.Final.jar:4.2.12.Final] at bitronix.tm.BitronixTransaction.fireBeforeCompletionEvent(BitronixTransaction.java:478) ~[btm-2.1.2.jar:2.1.2] at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:193) ~[btm-2.1.2.jar:2.1.2] at bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:120) ~[btm-2.1.2.jar:2.1.2] at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1012) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:148) ~[spring-tx-3.2.9.RELEASE.jar:3.2.9.RELEASE] at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:267) ~[spring-batch-core-2.2.7.RELEASE.jar:na] at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:77) ~[spring-batch-core-2.2.7.RELEASE.jar:na] at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:368) [spring-batch-infrastructure-2.2.7.RELEASE.jar:na] ... Caused by: org.hibernate.exception.LockAcquisitionException: could not execute statement at org.hibernate.dialect.MySQLDialect$1.convert(MySQLDialect.java:412) ~[hibernate-core-4.2.12.Final.jar:4.2.12.Final] ... Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_05] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_05] ... {code} I fail to see how that can be desired behavior. Or am I just missing something here?

    Spring JIRA | 1 year ago | Erwin Vervaet
    javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement
  6. 0

    Sql Server Deadlock Victim

    wpthm.com | 1 year ago
    javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute query

    Not finding the right solution?
    Take a tour to get the most out of Samebug.

    Tired of useless tips?

    Automated exception search integrated into your IDE

    Root Cause Analysis

    1. javax.persistence.PersistenceException

      org.hibernate.exception.LockAcquisitionException: could not execute statement: org.keycloak.models.ModelException: javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not execute statement

      at org.keycloak.connections.jpa.PersistenceExceptionConverter.convert()
    2. org.keycloak.connections
      PersistenceExceptionConverter.invoke
      1. org.keycloak.connections.jpa.PersistenceExceptionConverter.convert(PersistenceExceptionConverter.java:44)
      2. org.keycloak.connections.jpa.PersistenceExceptionConverter.invoke(PersistenceExceptionConverter.java:34)
      2 frames
    3. com.sun.proxy
      $Proxy147.flush
      1. com.sun.proxy.$Proxy147.flush(Unknown Source)
      1 frame
    4. org.keycloak.models
      KeycloakModelUtils.findUserByNameOrEmail
      1. org.keycloak.models.jpa.JpaUserProvider.removeUser(JpaUserProvider.java:117)
      2. org.keycloak.models.jpa.JpaUserProvider.removeUser(JpaUserProvider.java:97)
      3. org.keycloak.models.cache.infinispan.DefaultCacheUserProvider.removeUser(DefaultCacheUserProvider.java:283)
      4. org.keycloak.models.UserFederationManager.deleteInvalidUser(UserFederationManager.java:113)
      5. org.keycloak.models.UserFederationManager.validateAndProxyUser(UserFederationManager.java:135)
      6. org.keycloak.models.UserFederationManager.getUserByUsername(UserFederationManager.java:182)
      7. org.keycloak.models.utils.KeycloakModelUtils.findUserByNameOrEmail(KeycloakModelUtils.java:246)
      7 frames
    5. org.keycloak.authentication
      AuthenticationProcessor.authenticateOnly
      1. org.keycloak.authentication.authenticators.directgrant.ValidateUsername.authenticate(ValidateUsername.java:47)
      2. org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:155)
      3. org.keycloak.authentication.AuthenticationProcessor.authenticateOnly(AuthenticationProcessor.java:776)
      3 frames
    6. org.keycloak.protocol
      TokenEndpoint.build
      1. org.keycloak.protocol.oidc.endpoints.TokenEndpoint.buildResourceOwnerPasswordCredentialsGrant(TokenEndpoint.java:369)
      2. org.keycloak.protocol.oidc.endpoints.TokenEndpoint.build(TokenEndpoint.java:110)
      2 frames
    7. Java RT
      Method.invoke
      1. sun.reflect.GeneratedMethodAccessor284.invoke(Unknown Source)
      2. sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      3. java.lang.reflect.Method.invoke(Method.java:497)
      3 frames
    8. RESTEasy JAX-RS Implementation
      HttpServletDispatcher.service
      1. org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)
      2. org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)
      3. org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)
      4. org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:140)
      5. org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:109)
      6. org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:135)
      7. org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:103)
      8. org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)
      9. org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
      10. org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
      11. org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
      12. org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
      12 frames
    9. JavaServlet
      HttpServlet.service
      1. javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      1 frame
    10. Undertow Servlet
      FilterHandler$FilterChainImpl.doFilter
      1. io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
      2. io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
      2 frames
    11. org.keycloak.services
      KeycloakSessionServletFilter.doFilter
      1. org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)
      1 frame
    12. Undertow Servlet
      ServletDispatchingHandler.handleRequest
      1. io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
      2. io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
      3. io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
      4. io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
      5. io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
      5 frames
    13. WildFly: Undertow
      SecurityContextAssociationHandler.handleRequest
      1. org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
      1 frame
    14. Undertow Core
      PredicateHandler.handleRequest
      1. io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      1 frame
    15. Undertow Servlet
      ServletAuthenticationCallHandler.handleRequest
      1. io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
      2. io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
      2 frames
    16. Undertow Core
      AbstractConfidentialityHandler.handleRequest
      1. io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      2. io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
      2 frames
    17. Undertow Servlet
      ServletConfidentialityConstraintHandler.handleRequest
      1. io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
      1 frame
    18. Undertow Core
      AuthenticationMechanismsHandler.handleRequest
      1. io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
      1 frame
    19. Undertow Servlet
      CachedAuthenticatedSessionHandler.handleRequest
      1. io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
      1 frame
    20. Undertow Core
      PredicateHandler.handleRequest
      1. io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
      2. io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
      3. io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      3 frames
    21. WildFly: Undertow
      JACCContextIdHandler.handleRequest
      1. org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
      1 frame
    22. Undertow Core
      PredicateHandler.handleRequest
      1. io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      2. io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      2 frames
    23. Undertow Servlet
      ServletInitialHandler$1.handleRequest
      1. io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
      2. io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
      3. io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
      4. io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
      4 frames
    24. Undertow Core
      HttpServerExchange$1.run
      1. io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
      2. io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
      2 frames
    25. Java RT
      ThreadPoolExecutor$Worker.run
      1. java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      2. java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      2 frames