Skip to content
This repository has been archived by the owner on Jan 18, 2022. It is now read-only.

HibernateOptimisticLockingFailureException after upgrade to grails 3.3 #85

Open
demon101 opened this issue Mar 6, 2019 · 3 comments
Open

Comments

@demon101
Copy link
Contributor

demon101 commented Mar 6, 2019

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
@Guito
Copy link

Guito commented Jul 11, 2019

Did you find any solution?

@demon101
Copy link
Contributor Author

nope, we are migrating to mailgun with rest api

@shresthaankit7
Copy link

Same problems facing after migration from Grails 2.X.X to 3.3.11.
Any solutions on the fixes ?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants