-
Notifications
You must be signed in to change notification settings - Fork 199
Description
Original Reporter: oct
Environment: Linux 64bi, Grails 1.3.7
Version: 1.0.0.M6
Migrated From: http://jira.grails.org/browse/GPMONGODB-68
This started to happen in M6 version, M5 does not have this issue.
{code}
[User.groovy]
package gello
import org.bson.types.ObjectId
class User {
ObjectId id
String name
// Settings settings
static mapWith = "mongo"
def beforeDelete() {
Settings.withNewSession {
def us = Settings.findByUser(id)
if (us) {
us.delete(flush:true)
log.debug "Deleting user settings for ${name}"
}
}
}
}
[Settings.groovy]
package gello
import org.bson.types.ObjectId
class Settings {
ObjectId id
static belongsTo=[user:User]
Boolean a
Boolean b
static mapWith = "mongo"
}
[MongoUsageTest.groovy]
package gello
import grails.test.*
class MongoUsageTests extends GroovyTestCase {
void test_user_settings() {
def u = new User(name:'gunit', settings:new Settings()).save(failOnError:true, flush:true)
assertNotNull u
def u2 = User.get(u.id)
assertNotNull u2
u2.delete(flush:true)
def u3 = User.get(u.id)
assertNull u3
}
}
[Error]
java.lang.StackOverflowError
at org.grails.datastore.gorm.events.DomainEventListener.invokeEvent(DomainEventListener.java:194)
at org.grails.datastore.gorm.events.DomainEventListener.beforeDelete(DomainEventListener.java:136)
at org.grails.datastore.gorm.events.DomainEventListener.onPersistenceEvent(DomainEventListener.java:92)
at org.grails.datastore.gorm.finders.AbstractFindByFinder.invokeQuery(AbstractFindByFinder.java:34)
at org.grails.datastore.gorm.finders.AbstractFindByFinder$1.doInSession(AbstractFindByFinder.java:26)
at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:36)
at org.grails.datastore.gorm.finders.AbstractFindByFinder.doInvokeInternal(AbstractFindByFinder.java:23)
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:137)
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:284)
at org.grails.datastore.gorm.finders.FinderMethod$invoke.call(Unknown Source)
at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:91)
at org.grails.datastore.gorm.StaticMethodInvokingClosure.call(GormEnhancer.groovy:266)
at gello.User$_beforeDelete_closure1.doCall(User.groovy:17)
at org.grails.datastore.gorm.GormStaticApi.withNewSession(GormStaticApi.groovy:557)
at org.grails.datastore.gorm.StaticMethodInvokingClosure.call(GormEnhancer.groovy:266)
at gello.User.beforeDelete(User.groovy:16)
at org.grails.datastore.gorm.events.DomainEventListener.invokeEvent(DomainEventListener.java:194)
at org.grails.datastore.gorm.events.DomainEventListener.beforeDelete(DomainEventListener.java:136)
at org.grails.datastore.gorm.events.DomainEventListener.onPersistenceEvent(DomainEventListener.java:92)
at org.grails.datastore.gorm.finders.AbstractFindByFinder.invokeQuery(AbstractFindByFinder.java:34)
at org.grails.datastore.gorm.finders.AbstractFindByFinder$1.doInSession(AbstractFindByFinder.java:26)
at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:36)
at org.grails.datastore.gorm.finders.AbstractFindByFinder.doInvokeInternal(AbstractFindByFinder.java:23)
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:137)
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:284)
at org.grails.datastore.gorm.finders.FinderMethod$invoke.call(Unknown Source)
at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:91)
at org.grails.datastore.gorm.StaticMethodInvokingClosure.call(GormEnhancer.groovy:266)
at gello.User$_beforeDelete_closure1.doCall(User.groovy:17)
at org.grails.datastore.gorm.GormStaticApi.withNewSession(GormStaticApi.groovy:557)
at org.grails.datastore.gorm.StaticMethodInvokingClosure.call(GormEnhancer.groovy:266)
at gello.User.beforeDelete(User.groovy:16)
at org.grails.datastore.gorm.events.DomainEventListener.invokeEvent(DomainEventListener.java:194)
at org.grails.datastore.gorm.events.DomainEventListener.beforeDelete(DomainEventListener.java:136)
at org.grails.datastore.gorm.events.DomainEventListener.onPersistenceEvent(DomainEventListener.java:92)
at org.grails.datastore.gorm.finders.AbstractFindByFinder.invokeQuery(AbstractFindByFinder.java:34)
at org.grails.datastore.gorm.finders.AbstractFindByFinder$1.doInSession(AbstractFindByFinder.java:26)
at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:36)
at org.grails.datastore.gorm.finders.AbstractFindByFinder.doInvokeInternal(AbstractFindByFinder.java:23)
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:137)
at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:284)
at org.grails.datastore.gorm.finders.FinderMethod$invoke.call(Unknown Source)
at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:91)
at org.grails.datastore.gorm.StaticMethodInvokingClosure.call(GormEnhancer.groovy:266)
at gello.User$_beforeDelete_closure1.doCall(User.groovy:17)
at org.grails.datastore.gorm.GormStaticApi.withNewSession(GormStaticApi.groovy:557)
at org.grails.datastore.gorm.StaticMethodInvokingClosure.call(GormEnhancer.groovy:266)
at gello.User.beforeDelete(User.groovy:16)
{code}