Trying to prune versions on a page that is updated via the XMLRPC API. When a new version gets created by the bot the pruning job terminates with this error.
Object of class [java.lang.Object] with identifier [null]: optimistic locking failed; nested exception is net.sf.hibernate.StaleObjectStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
org.springframework.orm.hibernate.HibernateOptimisticLockingFailureException: Object of class [java.lang.Object] with identifier [null]: optimistic locking failed; nested exception is net.sf.hibernate.StaleObjectStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 at org.springframework.orm.hibernate.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:593) at org.springframework.orm.hibernate.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:607) at org.springframework.orm.hibernate.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:518) at com.atlassian.confluence.impl.hibernate.ConfluenceHibernateTransactionManager.doCommit(ConfluenceHibernateTransactionManager.java:69) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at com.sun.proxy.$Proxy53.commit(Unknown Source) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) at com.sun.proxy.$Proxy2544.execute(Unknown Source) at com.atlassian.confluence.core.service.ServiceCommand$execute.call(Unknown Source) at com.onresolve.scriptrunner.canned.confluence.jobs.PruneOldPageVersions$_doScript_closure3$_closure4$_closure6.doCall(PruneOldPageVersions.groovy:133) at com.onresolve.scriptrunner.canned.confluence.jobs.PruneOldPageVersions$_doScript_closure3$_closure4.doCall(PruneOldPageVersions.groovy:128) at com.onresolve.scriptrunner.canned.confluence.jobs.PruneOldPageVersions$_doScript_closure3.doCall(PruneOldPageVersions.groovy:110) at com.onresolve.scriptrunner.canned.confluence.jobs.PruneOldPageVersions$_doScript_closure3.doCall(PruneOldPageVersions.groovy) at com.onresolve.scriptrunner.jobs.AbstractConfluenceCustomScheduledJob$_switchIndentityAndExecute_closure1.doCall(AbstractConfluenceCustomScheduledJob.groovy:29) at com.onresolve.scriptrunner.jobs.AbstractConfluenceCustomScheduledJob$_switchIndentityAndExecute_closure1.doCall(AbstractConfluenceCustomScheduledJob.groovy) at com.atlassian.confluence.user.AuthenticatedUserImpersonator$2.call(AuthenticatedUserImpersonator.java:118) at com.atlassian.confluence.user.AuthenticatedUserImpersonator$1.call(AuthenticatedUserImpersonator.java:101) at com.atlassian.confluence.user.AuthenticatedUserImpersonator.asUser(AuthenticatedUserImpersonator.java:82) at com.atlassian.confluence.user.AuthenticatedUserImpersonator$asUser.call(Unknown Source) at com.onresolve.scriptrunner.jobs.AbstractConfluenceCustomScheduledJob.switchIndentityAndExecute(AbstractConfluenceCustomScheduledJob.groovy:28) at com.onresolve.scriptrunner.jobs.AbstractConfluenceCustomScheduledJob$switchIndentityAndExecute.callCurrent(Unknown Source) at com.onresolve.scriptrunner.canned.confluence.jobs.PruneOldPageVersions.doScript(PruneOldPageVersions.groovy:100) Caused by: net.sf.hibernate.StaleObjectStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 at org.hibernate.internal.ExceptionConverterImpl.wrapStaleStateException(ExceptionConverterImpl.java:212) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:86) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:162) at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1411) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:475) at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3168) at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2382) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:467) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:146) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:220) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68) at com.atlassian.hibernate.adapter.adapters.TransactionV2Adapter.commit(TransactionV2Adapter.java:30) at org.springframework.orm.hibernate.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:510) ... 26 more
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.