HibernateOptimisticLockingFailureException after upgrade to grails 3.3
Opened this issue · 3 comments
After upgrade grails 3.2.12 -> 3.3.9 I see on prod periodically exceptions:
org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:283)
at org.grails.orm.hibernate.GrailsHibernateTemplate.convertHibernateAccessException(GrailsHibernateTemplate.java:724)
at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:303)
at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:243)
at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:117)
at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.performSave(AbstractHibernateGormInstanceApi.groovy:246)
at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.save(AbstractHibernateGormInstanceApi.groovy:163)
at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:151)
at org.grails.datastore.gorm.GormEntity$Trait$Helper$save$3.call(Unknown Source)
at grails.plugin.asyncmail.AsynchronousMailMessage.save(AsynchronousMailMessage.groovy)
at grails.plugin.asyncmail.AsynchronousMailPersistenceService.save(AsynchronousMailPersistenceService.groovy:16)
at grails.plugin.asyncmail.AsynchronousMailProcessService.processEmailMessage(AsynchronousMailProcessService.groovy:91)
at grails.plugin.asyncmail.AsynchronousMailProcessService$_findAndSendEmails_closure1$_closure3.doCall(AsynchronousMailProcessService.groovy:46)
at grails.plugin.asyncmail.AsynchronousMailProcessService$_findAndSendEmails_closure1$_closure3.call(AsynchronousMailProcessService.groovy)
at org.grails.orm.hibernate.GrailsHibernateTemplate$1.doInHibernate(GrailsHibernateTemplate.java:153)
at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:299)
at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:243)
at org.grails.orm.hibernate.GrailsHibernateTemplate.executeWithNewSession(GrailsHibernateTemplate.java:150)
at org.grails.orm.hibernate.AbstractHibernateDatastore.withNewSession(AbstractHibernateDatastore.java:356)
at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withNewSession(AbstractHibernateGormStaticApi.groovy:60)
at org.grails.datastore.gorm.GormEntity$Trait$Helper.withNewSession(GormEntity.groovy:1025)
at org.grails.datastore.gorm.GormEntity$Trait$Helper$withNewSession.call(Unknown Source)
at grails.plugin.asyncmail.AsynchronousMailMessage.withNewSession(AsynchronousMailMessage.groovy)
at grails.plugin.asyncmail.AsynchronousMailProcessService$_findAndSendEmails_closure1.doCall(AsynchronousMailProcessService.groovy:42)
at grails.plugin.asyncmail.AsynchronousMailProcessService$_findAndSendEmails_closure1.call(AsynchronousMailProcessService.groovy)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
During upgrade flush mode has been changed to COMMIT
We are sending thousands of mails every day
asynchronous.mail.send.repeat.interval=20000l
asynchronous.mail.default.max.attempts.count=3
asynchronous.mail.messages.at.once=350
asynchronous.mail.send.immediately=false // since 0.1.2
asynchronous.mail.disable=false // since 0.7
//grails.mail.disabled=true
asynchronous.mail.persistence.provider='hibernate4' // Possible values are 'hibernate', 'hibernate4', 'mongodb'
asynchronous.mail.taskPoolSize=1
asynchronous.mail.newSessionOnImmediateSend=false
Did you find any solution?
nope, we are migrating to mailgun with rest api
Same problems facing after migration from Grails 2.X.X to 3.3.11.
Any solutions on the fixes ?