We've been having problems with cruisecontrol running long builds on virtual test machines. The log indicates cruisecontrol is restarting during the build. This is what the cruisecontrol.log shows.
...
2012-05-17 08:09:30,719 [Thread-30] INFO ScriptRunner - ccAnt..
2012-05-17 08:09:31,202 [Thread-30] INFO ScriptRunner - ccAnt..
2012-05-17 08:09:32,042 [Thread-30] INFO ScriptRunner - ccAnt..
2012-05-17 08:03:49,674 [WrapperSimpleAppMain] INFO Main - CruiseControl Version 2.8.4 Compiled on January 5 2012 0831
2012-05-17 08:03:49,674 [WrapperSimpleAppMain] INFO XMLConfigManager - reading settings from config file [C:\systest\cruisecontrol\systest-cc-config.xml]
2012-05-17 08:03:50,328 [WrapperSimpleAppMain] FATAL PluginXMLHelper - Error configuring plugin.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
...
Cruisecontrol is running ant tasks and then all of a sudden it appears to restart indicated by the fourth line of logging. Sometimes the build finishes all the way and sometimes the restart happens.
This problem occurs on different flavors of Windows from 7 64 to xp32. The virtual machines have 5 gb of ram and dual core processors. The builds can take 500 to 600 minutes and some of the individual ant tasks can take 150 minutes.
Note we have a standalone Windows 7 64 machine which runs the same set of tasks under cruisecontrol and does not exhibit this problem. It runs the build in about 1/7th the time of the virtual machines.
Anyone have any ideas about this? My best guess is a timeout is getting triggered in the wrapper process or parent java process. wrapper.conf has no variables for controlling a timeout though.
We are using CruiseControl 2.8.4.
NEW:
I just found the following two events in the event viewer which correspond to the time in the cruisecontrol log when cruisecontrol restarted in the middle of a build.
JVM appears hung: Timed out waiting for signal from JVM.
JVM did not exit on request, terminated
How do I increase the timeout of the JVM?
The problem was the CruiseControl wrapper was thinking the JVM was hung. The timeout for the wrapper pinging the JVM was 30 seconds. I've increased it to an hour for now. This page explains it.