Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StackOverflowError during saving in gorm 6.10 #1131

Closed
2 of 4 tasks
demon101 opened this issue Aug 3, 2018 · 4 comments
Closed
2 of 4 tasks

StackOverflowError during saving in gorm 6.10 #1131

demon101 opened this issue Aug 3, 2018 · 4 comments

Comments

@demon101
Copy link
Contributor

demon101 commented Aug 3, 2018

One time in tests I got StackOverflowError during saving or entity with beforeUpdate logic.
It happens only once during test, I'm not sure I can reproduce. But I will provide project with same domain graph. As I can see, on every step it saves Contract entity with same ID
Same code works well in prod with GORM 6.0.12

at org.grails.datastore.gorm.GormEntity$Trait$Helper.withNewSession(GormEntity.groovy:1025)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper$withNewSession$16.call(Unknown Source)
	at com.xxx.offer.Contract.withNewSession(Contract.groovy)
	at com.xxx.offer.Contract$withNewSession.call(Unknown Source)
	at com.xxx.offer.Contract.updateFields(Contract.groovy:209)
	at com.xxx.offer.Contract.updateFields(Contract.groovy)
	at sun.reflect.GeneratedMethodAccessor1708.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:161)
	at com.xxx.offer.Contract.beforeUpdate(Contract.groovy:190)
	at sun.reflect.GeneratedMethodAccessor1707.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:216)
	at org.grails.datastore.gorm.support.EventTriggerCaller$MethodCaller.call(EventTriggerCaller.java:147)
	at org.grails.datastore.gorm.support.EventTriggerCaller.call(EventTriggerCaller.java:90)
	at org.grails.orm.hibernate.support.ClosureEventListener$7.call(ClosureEventListener.java:240)
	at org.grails.orm.hibernate.support.ClosureEventListener$7.call(ClosureEventListener.java:234)
	at org.grails.orm.hibernate.support.ClosureEventListener.doWithManualSession(ClosureEventListener.java:358)
	at org.grails.orm.hibernate.support.ClosureEventListener.onPreUpdate(ClosureEventListener.java:234)
	at org.grails.orm.hibernate.event.listener.HibernateEventListener.onPreUpdate(HibernateEventListener.java:145)
	at org.grails.orm.hibernate.event.listener.HibernateEventListener.onPersistenceEvent(HibernateEventListener.java:66)
	at org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener.onApplicationEvent(AbstractPersistenceEventListener.java:51)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
	at org.grails.datastore.gorm.events.ConfigurableApplicationContextEventPublisher.publishEvent(ConfigurableApplicationContextEventPublisher.groovy:30)
	at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.publishEvent(ClosureEventTriggeringInterceptor.java:258)
	at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.onPreUpdate(ClosureEventTriggeringInterceptor.java:226)
	at org.hibernate.action.internal.EntityUpdateAction.preUpdate(EntityUpdateAction.java:244)
	at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:118)
	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)
	at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295)
	at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.flushSession(AbstractHibernateGormInstanceApi.groovy:284)
	at sun.reflect.GeneratedMethodAccessor539.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:947)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:930)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:92)
	at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi$_performSave_closure3.doCall(AbstractHibernateGormInstanceApi.groovy:249)
	at sun.reflect.GeneratedMethodAccessor538.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.Closure.call(Closure.java:418)
	at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:54)
	at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:124)
	at com.sun.proxy.$Proxy166.doInHibernate(Unknown Source)
	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.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.GormInstanceApi.save(GormInstanceApi.groovy:118)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:98)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper$save$20.call(Unknown Source)
	at com.xxx.something.Something.save(Something.groovy)
	at sun.reflect.GeneratedMethodAccessor4499.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.grails.orm.hibernate.proxy.GroovyAwareJavassistLazyInitializer.invoke(GroovyAwareJavassistLazyInitializer.java)
	at com.xxx.something.Something_$$_jvstbcb_6e.save(Something_$$_jvstbcb_6e.java)
	at com.xxx.something.Something.save(Something.groovy)
	at org.grails.datastore.gorm.GormEntity$save$3.call(Unknown Source)
	at com.xxx.offer.Contract.beforeUpdate(Contract.groovy:194)
	at sun.reflect.GeneratedMethodAccessor1707.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:216)
	at org.grails.datastore.gorm.support.EventTriggerCaller$MethodCaller.call(EventTriggerCaller.java:147)
	at org.grails.datastore.gorm.support.EventTriggerCaller.call(EventTriggerCaller.java:90)
	at org.grails.orm.hibernate.support.ClosureEventListener$7.call(ClosureEventListener.java:240)
	at org.grails.orm.hibernate.support.ClosureEventListener$7.call(ClosureEventListener.java:234)
	at org.grails.orm.hibernate.support.ClosureEventListener.doWithManualSession(ClosureEventListener.java:358)
	at org.grails.orm.hibernate.support.ClosureEventListener.onPreUpdate(ClosureEventListener.java:234)
	at org.grails.orm.hibernate.event.listener.HibernateEventListener.onPreUpdate(HibernateEventListener.java:145)
	at org.grails.orm.hibernate.event.listener.HibernateEventListener.onPersistenceEvent(HibernateEventListener.java:66)
	at org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener.onApplicationEvent(AbstractPersistenceEventListener.java:51)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
	at org.grails.datastore.gorm.events.ConfigurableApplicationContextEventPublisher.publishEvent(ConfigurableApplicationContextEventPublisher.groovy:30)
	at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.publishEvent(ClosureEventTriggeringInterceptor.java:258)
	at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.onPreUpdate(ClosureEventTriggeringInterceptor.java:226)
	at org.hibernate.action.internal.EntityUpdateAction.preUpdate(EntityUpdateAction.java:244)
	at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:118)
	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)
	at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295)
	at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.flushSession(AbstractHibernateGormInstanceApi.groovy:284)
	at sun.reflect.GeneratedMethodAccessor539.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:947)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:930)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:92)
	at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi$_performSave_closure3.doCall(AbstractHibernateGormInstanceApi.groovy:249)
	at sun.reflect.GeneratedMethodAccessor538.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.Closure.call(Closure.java:418)
	at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:54)
	at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:124)
	at com.sun.proxy.$Proxy166.doInHibernate(Unknown Source)
	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.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.GormInstanceApi.save(GormInstanceApi.groovy:118)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:98)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper$save$20.call(Unknown Source)
	at com.xxx.something.Something.save(Something.groovy)
	at sun.reflect.GeneratedMethodAccessor4499.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.grails.orm.hibernate.proxy.GroovyAwareJavassistLazyInitializer.invoke(GroovyAwareJavassistLazyInitializer.java)
	at com.xxx.something.Something_$$_jvstbcb_6e.save(Something_$$_jvstbcb_6e.java)
	at com.xxx.something.Something.save(Something.groovy)
	at org.grails.datastore.gorm.GormEntity$save$3.call(Unknown Source)
	at com.xxx.offer.Contract.beforeUpdate(Contract.groovy:194)
	at sun.reflect.GeneratedMethodAccessor1707.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:216)
	at org.grails.datastore.gorm.support.EventTriggerCaller$MethodCaller.call(EventTriggerCaller.java:147)
	at org.grails.datastore.gorm.support.EventTriggerCaller.call(EventTriggerCaller.java:90)
	at org.grails.orm.hibernate.support.ClosureEventListener$7.call(ClosureEventListener.java:240)
	at org.grails.orm.hibernate.support.ClosureEventListener$7.call(ClosureEventListener.java:234)
	at org.grails.orm.hibernate.support.ClosureEventListener.doWithManualSession(ClosureEventListener.java:358)
	at org.grails.orm.hibernate.support.ClosureEventListener.onPreUpdate(ClosureEventListener.java:234)
	at org.grails.orm.hibernate.event.listener.HibernateEventListener.onPreUpdate(HibernateEventListener.java:145)
	at org.grails.orm.hibernate.event.listener.HibernateEventListener.onPersistenceEvent(HibernateEventListener.java:66)
	at org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener.onApplicationEvent(AbstractPersistenceEventListener.java:51)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
	at org.grails.datastore.gorm.events.ConfigurableApplicationContextEventPublisher.publishEvent(ConfigurableApplicationContextEventPublisher.groovy:30)
	at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.publishEvent(ClosureEventTriggeringInterceptor.java:258)
	at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.onPreUpdate(ClosureEventTriggeringInterceptor.java:226)
	at org.hibernate.action.internal.EntityUpdateAction.preUpdate(EntityUpdateAction.java:244)
	at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:118)
	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)
	at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295)
	at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.flushSession(AbstractHibernateGormInstanceApi.groovy:284)
	at sun.reflect.GeneratedMethodAccessor539.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:947)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:930)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:92)
	at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi$_performSave_closure3.doCall(AbstractHibernateGormInstanceApi.groovy:249)
	at sun.reflect.GeneratedMethodAccessor538.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.Closure.call(Closure.java:418)
	at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:54)
	at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:124)
	at com.sun.proxy.$Proxy166.doInHibernate(Unknown Source)
	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.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.GormInstanceApi.save(GormInstanceApi.groovy:118)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:98)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper$save$20.call(Unknown Source)
	at com.xxx.something.Something.save(Something.groovy)
	at sun.reflect.GeneratedMethodAccessor4499.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.grails.orm.hibernate.proxy.GroovyAwareJavassistLazyInitializer.invoke(GroovyAwareJavassistLazyInitializer.java)
	at com.xxx.something.Something_$$_jvstbcb_6e.save(Something_$$_jvstbcb_6e.java)
	at com.xxx.something.Something.save(Something.groovy)
	at org.grails.datastore.gorm.GormEntity$save$3.call(Unknown Source)
	at com.xxx.offer.Contract.beforeUpdate(Contract.groovy:194)
	at sun.reflect.GeneratedMethodAccessor1707.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

  1. Create Domains structure like: Contract 1-1 Offer *-1 Something
  2. Change Contract and save
  3. In Contract beforeUpdate modify and save Something

Expected Behaviour

Everithing saved without error

Actual Behaviour

StackOverflowError during cycle saving

Environment Information

  • GORM Version: 6.1.10
  • Grails Version (if using Grails): 3.3.6
  • JDK Version: TODO

Example Application

https://github.com/demon101/grails-bug-cyclic-save

@graemerocher
Copy link
Member

The referenced example application includes no code

@demon101
Copy link
Contributor Author

demon101 commented Aug 3, 2018

@graemerocher have pushed one minute ago. I was on the progress.
I have tried to make same with my app domain structure. But I didn't reproduce the bug in the app. I hope, it will be enough

@graemerocher
Copy link
Member

Saving objects in events is not supported, as the events are triggered in the middle of a flush. This is mentioned in http:https://gorm.grails.org/latest/hibernate/manual/index.html#advancedGORMFeatures

@demon101
Copy link
Contributor Author

demon101 commented Aug 3, 2018

damn, right, I've come across this.

but it is really misleading that the functionality stops working a little at each update

Sorry. I think the issue can be closed

@demon101 demon101 closed this as completed Aug 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants