2012-03-26 3 views
1

Ich bin auf einen seltsamen Fehler und ich weiß nicht, wie es zu beheben ist. Ich schaffe Testeinheiten in Bootstrap.groovy:Grails - Bootstrapping Testdaten schlägt fehl

def init = { servletContext -> 


    if (Environment.current != Environment.TEST) { 
     servletContext.reloadId = new Date().getTime() // for reloading css 

     // create some insurance companies 
     InsuranceCompany ozp = InsuranceCompany.findOrSaveWhere(code: "207", acronym: "OZP", name: "Oborová zdravotní pojišťovna zaměstnanců bank, pojišťoven a stavebnictví") 
     InsuranceCompany vzp = InsuranceCompany.findOrSaveWhere(code: "111", acronym: "VZP", name: "Všeobecná zdravotní pojišťovna České republiky") 
     InsuranceCompany vozp = InsuranceCompany.findOrSaveWhere(code: "201", acronym: "VOZP", name: "Vojenská zdravotní pojišťovna České republiky") 
     Patient miladavrana = Patient.findOrSaveWhere(title: "JUDr", firstName: "Milada", lastName: "Vraná", RC: "0307080846", insuranceCompany: vozp,address: new Address(street: "5.Května", number: 568, city: "Korouhev", PSC: 16422)) 
     Patient jiristarecek = Patient.findOrSaveWhere(title: "", firstName: "Jiří", lastName: "Stareček", RC: "9457174705", insuranceCompany: cpzp,address: new Address(street: "Nad Schody", number: 180, city: "Velký Valtinov", PSC: 51521)) 
} 

Tatsächlich ist die Bootstrap-Datei ist ziemlich länger, ist es fast 1000 Zeilen von Testdaten hat. Alles funktioniert gut, wenn ich 2/3 dieser Daten kommentiere. Wenn ich all diese Daten uncomment und Grails haben versucht, es zu schaffen, scheitert es:

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000000262b036, pid=4152, tid=8016 
# 
# JRE version: 6.0_29-b11 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.4-b02 mixed mode windows-amd64 compressed oops) 
# Problematic frame: 
# j BootStrap$_closure1.doCall(Ljava/lang/Object;)Ljava/lang/Object;+87 
# 
# If you would like to submit a bug report, please visit: 
# http://java.sun.com/webapps/bugreport/crash.jsp 
# 

--------------- T H R E A D --------------- 

Current thread (0x000000000d985800): JavaThread "pool-7-thread-1" [_thread_in_Java, id=8016, stack(0x000000000bcf0000,0x000000000bdf0000)] 

siginfo: ExceptionCode=0xc0000005, reading address 0x0000000138c797cf 

Registers: 
RAX=0x000000000bdedd78, RBX=0x000000000bdedd78, RCX=0x00000000d9d1e488, RDX=0x00000000d9d0abff 
RSP=0x000000000bdedd88, RBP=0x000000000bdeddb8, RSI=0x000000000d985800, RDI=0x000000000ee83ed0 
R8 =0x0000000000000004, R9 =0x00000000d4b4e890, R10=0x000000006dfc4f80, R11=0x000000000ee83f38 
R12=0x0000000000000000, R13=0x00000000d9d1d8ce, R14=0x000000000bdee5b0, R15=0x000000000d985800 
RIP=0x000000000262b036, EFLAGS=0x0000000000010287 

diesem Teil des log der Fehler erzeugt ist. Ich benutze Grails 2.0.1 & MySQL 5.5.21 als Datenbank. Jeder könnte hep oder hat diesen Fehler vor? Vielen Dank.

Cheers, Lojza

+0

ich denke, es ist ein Groovy-Problem. Groovy unterstützt keine großen * .groovy-Dateien. – jenk

Antwort

0

Versuchen Sie, die Heapzuordnung auf Ihre JVM durch JAVAOPTS erhöhen.

+0

Ich versuchte, es 4x zu erhöhen, aber immer noch den gleichen Fehler ... –

+1

warum versuchen Sie nicht, den Code im Bootstrap in verschiedene Klassen zu brechen und sie aus dem Bootstrap aufrufen. Und wenn Sie sparen, tun Sie es in verschiedenen Transaktionen. Denken Sie daran zu spülen, wenn Sie auch speichern. Ich kenne die JVM, um mit großen Dateien umzugehen, aber das scheint entweder ein grooviger Compiler oder ein Hibernate-Problem zu sein. – chethan

+2

Danke! Du hast absolut recht! Ich benutze "withTransaction" und jetzt funktioniert es wie eine Magie! –