-
Type:
Bug
-
Status: Closed (View Workflow)
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 11.3
-
Component/s: None
-
Labels:None
-
Funded by:
This error appears sometimes on a single specific instance. The solution is to replace the pessimistic locking by a simple update statement. In both, last commit win.
2017-03-07 09:44:57,897 [ajp-nio2-8017-exec-8] ERROR DBRuntimeException - OLAT::ERROR ^%^ N17-E6 ^%^ org.olat.core.logging https://xyz.olat.com/auth/RepositoryEntry/24084481/Editor/0 ^%^ Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko **RedScreen** commit failed, rollback transaction <dispatchinfo> <componentinfo> <compname>pbl.quick.auto</compname> <compclass>org.olat.core.gui.components.link.Link</compclass> <extendedinfo>n/a</extendedinfo> <event> <class>org.olat.core.gui.control.Event</class> <command>pbl.quick.auto</command> <tostring>com:pbl.quick.auto,org.olat.core.gui.control.Event@809d32e3</tostring> </event> </componentinfo> <controllerinfo> <controllername>org.olat.course.editor.QuickPublishController</controllername> <controllername>org.olat.course.editor.EditorMainController</controllername> <controllername>org.olat.course.run.CourseRuntimeController</controllername> <controllername>org.olat.core.commons.fullWebApp.BaseFullWebappController</controllername> </controllerinfo> </dispatchinfo> >>> stack of 1.cause::org.olat.core.logging.DBRuntimeException: commit failed, rollback transaction -> at org.olat.core.commons.persistence.DBImpl.commit(DBImpl.java:755) at org.olat.core.dispatcher.mapper.manager.MapperDAO.updateConfiguration(MapperDAO.java:82) at org.olat.core.dispatcher.mapper.manager.MapperServiceImpl.register(MapperServiceImpl.java:122) at org.olat.core.gui.control.controller.BasicController.registerCacheableMapper(BasicController.java:237) at org.olat.core.gui.control.controller.BasicController.registerCacheableMapper(BasicController.java:215) at org.olat.core.gui.control.generic.iframe.IFrameDisplayController.<init>(IFrameDisplayController.java:188) at org.olat.modules.scorm.ScormAPIandDisplayController.<init>(ScormAPIandDisplayController.java:179) at org.olat.modules.scorm.ScormMainManager.createScormAPIandDisplayController(ScormMainManager.java:133) at org.olat.course.nodes.scorm.ScormRunController.doLaunch(ScormRunController.java:309) at org.olat.course.nodes.scorm.ScormRunController.init(ScormRunController.java:157) at org.olat.course.nodes.scorm.ScormRunController.<init>(ScormRunController.java:124) >>> stack of 2.cause::javax.persistence.RollbackException: Error while committing the transaction -> at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:75) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:71) at org.olat.core.commons.persistence.DBImpl.commit(DBImpl.java:712) at org.olat.core.dispatcher.mapper.manager.MapperDAO.updateConfiguration(MapperDAO.java:82) at org.olat.core.dispatcher.mapper.manager.MapperServiceImpl.register(MapperServiceImpl.java:122 at org.olat.core.gui.control.controller.BasicController.registerCacheableMapper(BasicController.java:237) at org.olat.core.gui.control.controller.BasicController.registerCacheableMapper(BasicController.java:215) at org.olat.core.gui.control.generic.iframe.IFrameDisplayController.<init>(IFrameDisplayController.java:188) at org.olat.modules.scorm.ScormAPIandDisplayController.<init>(ScormAPIandDisplayController.java:179) at org.olat.modules.scorm.ScormMainManager.createScormAPIandDisplayController(ScormMainManager.java:133) at org.olat.course.nodes.scorm.ScormRunController.doLaunch(ScormRunController.java:309) >>> stack of 3.cause::javax.persistence.OptimisticLockException: 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.convertCommitException(ExceptionConverterImpl.java:56) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:71) at org.olat.core.commons.persistence.DBImpl.commit(DBImpl.java:712) at org.olat.core.dispatcher.mapper.manager.MapperDAO.updateConfiguration(MapperDAO.java:82) at org.olat.core.dispatcher.mapper.manager.MapperServiceImpl.register(MapperServiceImpl.java:122) at org.olat.core.gui.control.controller.BasicController.registerCacheableMapper(BasicController.java:237) at org.olat.core.gui.control.controller.BasicController.registerCacheableMapper(BasicController.java:215) at org.olat.core.gui.control.generic.iframe.IFrameDisplayController.<init>(IFrameDisplayController.java:188) >>> stack of 4.cause::org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 -> at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:67) at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:54) at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:46) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3186) at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3065) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3445) at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:145) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:586) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:460) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)