ohaya created SYNCOPE-1550:
------------------------------
Summary: Getting "JpaSystemException: The transaction cannot be
committed, because it was already marked for rollback only."
Key: SYNCOPE-1550
URL: https://issues.apache.org/jira/browse/SYNCOPE-1550
Project: Syncope
Issue Type: Bug
Components: core
Affects Versions: 2.1.5
Reporter: ohaya
I have a task that is importing users from a CSV file and then creating users
in a realm in Syncope 2.1.5. This task works fine when there are only a few
users in the CSV file, but if the CSV file is large (e.g., > 30K users), we are
getting errors like the following in the core.log:
15:04:29.529 ERROR org.apache.syncope.core.provisioning.java.job.TaskJob -
While executing task 6cef6cfd-4c73-4224-af6c-fd4c733224c7
org.springframework.orm.jpa.JpaSystemException: The transaction cannot be
committed, because it was already marked for rollback only. The transaction
will be rolled back instead. The cause of the rollback-only status is reported
in the embedded stack.; nested exception is
<openjpa-3.1.0-rafcec21a1d489dff682a3ce7986fac6a1c80e8e0 fatal general error>
org.apache.openjpa.persistence.PersistenceException: The transaction cannot be
committed, because it was already marked for rollback only. The transaction
will be rolled back instead. The cause of the rollback-only status is reported
in the embedded stack.
at
org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:407)
~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:127)
~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:536)
~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:534)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:305)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.apache.syncope.core.persistence.jpa.spring.DomainTransactionInterceptor.invoke(DomainTransactionInterceptor.java:60)
~[syncope-core-persistence-jpa-2.1.5.jar:2.1.5]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at com.sun.proxy.$Proxy351.execute(Unknown Source) ~[?:?]
at
org.apache.syncope.core.provisioning.java.job.TaskJob.lambda$execute$0(TaskJob.java:87)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.spring.security.AuthContextUtils.execWithAuthContext(AuthContextUtils.java:117)
~[syncope-core-spring-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.job.TaskJob.execute(TaskJob.java:76)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
~[quartz-2.3.1.jar:?]
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
~[quartz-2.3.1.jar:?]
Caused by: org.apache.openjpa.persistence.PersistenceException: The transaction
cannot be committed, because it was already marked for rollback only. The
transaction will be rolled back instead. The cause of the rollback-only status
is reported in the embedded stack.
at
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:92)
~[openjpa-kernel-3.1.0.jar:3.1.0]
at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1600)
~[openjpa-kernel-3.1.0.jar:3.1.0]
at
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:1035)
~[openjpa-kernel-3.1.0.jar:3.1.0]
at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:669)
~[openjpa-persistence-3.1.0.jar:3.1.0]
at
org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:532)
~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
... 14 more
Caused by: org.apache.openjpa.persistence.ArgumentException
at
org.apache.openjpa.kernel.BrokerImpl.setRollbackOnly(BrokerImpl.java:1726)
~[openjpa-kernel-3.1.0.jar:3.1.0]
at
org.apache.openjpa.kernel.DelegatingBroker.setRollbackOnly(DelegatingBroker.java:1080)
~[openjpa-kernel-3.1.0.jar:3.1.0]
at
org.apache.openjpa.persistence.EntityManagerImpl.setRollbackOnly(EntityManagerImpl.java:732)
~[openjpa-persistence-3.1.0.jar:3.1.0]
at
org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setRollbackOnly(JpaTransactionManager.java:682)
~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.orm.jpa.JpaTransactionManager.doSetRollbackOnly(JpaTransactionManager.java:581)
~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:847)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:812)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:552)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:299)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.apache.syncope.core.persistence.jpa.spring.DomainTransactionInterceptor.invoke(DomainTransactionInterceptor.java:60)
~[syncope-core-persistence-jpa-2.1.5.jar:2.1.5]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at com.sun.proxy.$Proxy86.getUserTO(Unknown Source) ~[?:?]
at
org.apache.syncope.core.provisioning.java.pushpull.DefaultUserPullResultHandler.getAnyTO(DefaultUserPullResultHandler.java:62)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.DefaultUserPullResultHandler.doCreate(DefaultUserPullResultHandler.java:80)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.AbstractPullResultHandler.create(AbstractPullResultHandler.java:272)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.AbstractPullResultHandler.provision(AbstractPullResultHandler.java:236)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.AbstractPullResultHandler.doHandle(AbstractPullResultHandler.java:816)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.AbstractPullResultHandler.handle(AbstractPullResultHandler.java:123)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at sun.reflect.GeneratedMethodAccessor749.invoke(Unknown Source) ~[?:?]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:1.8.0_222]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_222]
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.apache.syncope.core.persistence.jpa.spring.DomainTransactionInterceptor.invoke(DomainTransactionInterceptor.java:60)
~[syncope-core-persistence-jpa-2.1.5.jar:2.1.5]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at com.sun.proxy.$Proxy353.handle(Unknown Source) ~[?:?]
at
org.apache.syncope.core.provisioning.java.ConnectorFacadeProxy$1.handle(ConnectorFacadeProxy.java:340)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.ConnectorFacadeProxy$2.handle(ConnectorFacadeProxy.java:464)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.identityconnectors.framework.impl.api.StreamHandlerUtil$ObjectStreamHandlerAdapter.handle(StreamHandlerUtil.java:101)
~[connector-framework-internal-1.5.0.1.jar:?]
at
org.identityconnectors.framework.impl.api.BufferedResultsProxy.invoke(BufferedResultsProxy.java:262)
~[connector-framework-internal-1.5.0.1.jar:?]
at
org.identityconnectors.framework.impl.api.DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:94)
~[connector-framework-internal-1.5.0.1.jar:?]
at com.sun.proxy.$Proxy354.search(Unknown Source) ~[?:?]
at
org.identityconnectors.framework.impl.api.AbstractConnectorFacade.search(AbstractConnectorFacade.java:183)
~[connector-framework-internal-1.5.0.1.jar:?]
at
org.apache.syncope.core.provisioning.java.ConnectorFacadeProxy.search(ConnectorFacadeProxy.java:454)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.ConnectorFacadeProxy.filteredReconciliation(ConnectorFacadeProxy.java:331)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.ConnectorFacadeProxy.fullReconciliation(ConnectorFacadeProxy.java:313)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.PullJobDelegate.doExecuteProvisioning(PullJobDelegate.java:349)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.PullJobDelegate.doExecuteProvisioning(PullJobDelegate.java:67)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.pushpull.AbstractProvisioningJobDelegate.doExecute(AbstractProvisioningJobDelegate.java:553)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at
org.apache.syncope.core.provisioning.java.job.AbstractSchedTaskJobDelegate.execute(AbstractSchedTaskJobDelegate.java:122)
~[syncope-core-provisioning-java-2.1.5.jar:2.1.5]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:1.8.0_222]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[?:1.8.0_222]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:1.8.0_222]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_222]
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295)
~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]
... 10 more
I don't really understand why this error is happening, but from googling, and
threads such as:
[https://stackoverflow.com/questions/25322658/could-not-commit-jpa-transaction-transaction-marked-as-rollbackonly]
that seems to indicate that the problem might be a problem with Syncope code
(but I don't understand why it would only happen with larger CSV files)?
Is there something that we can do, configuration-wise, to avoid this problem?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)