We have CruiseControl.NET set up to do continuous integration of a number of our projects.
We are using a <cb:define>
block to make sure all of our source control operations are done in the same way, and to keep the config DRY.
We are experiencing an issue every once in a while that cause the build to show "Exception". The message is as follows:
ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out.
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo)
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Svn.GetModifications(IIntegrationResult from, IIntegrationResult to)
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild)
at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to)
at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request)
The common config section is as follows:
<sourcecontrol type="svn">
<trunkUrl>http://ourserver/svn/$(project-svn-path)/trunk/</trunkUrl>
<executable>C:\Program Files\CollabNet Subversion Server\csvn.exe</executable>
<username>user</username>
<password>password<password>
<revert>true</revert>
</sourcecontrol>
I would like to ignore this specific error, if possible.
What changes do I need to make?
Here's a block I use to prevent these kinds of errors affecting the build status:
<maxSourceControlRetries>5</maxSourceControlRetries>
<stopProjectOnReachingMaxSourceControlRetries>true</stopProjectOnReachingMaxSourceControlRetries>
<sourceControlErrorHandling>ReportOnRetryAmount</sourceControlErrorHandling>
You need to put these right below the <project>
tag, not the <sourcecontrol>
. I'm not sure you'll be able to ignore just the "timed out" exception, though - all SVN exceptions will be treated the same.
UPDATE: you can find out more about these settings in the CC.NET documentation, but let me copy the relevant stuff:
maxSourceControlRetries: The maximum amount of source control exceptions in a row that may occur, before the project goes to the stopped state(when stopProjectOnReachingMaxSourceControlRetries is set to true).
stopProjectOnReachingMaxSourceControlRetries: Stops the project on reaching maxSourceControlRetries or not. When set to true, the project will be stopped when the amount of consecutive source control errors is equal to maxSourceControlRetries.
sourceControlErrorHandling: What action to take when a source control error occurs (during GetModifications). These are the possible values :
Can't you just increase the 'timeout' value ?
<sourcecontrol>
...
<timeout>60000</timeout> <!-- timeout in milliseconds -->
...
</sourcecontrol>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With