We're using CruiseControl 2.8.4 with TFS. Every once in a while when we add a new project (i.e. a TFS branch) to the config.xml and restart CruiseControl, we get a StackOverflowError that looks like this:
2015-04-08 16:52:14,755 [Thread-57] ERROR ThreadQueue - uncaught exception in Thread-57
java.lang.StackOverflowError
at java.util.regex.Pattern$Single.isSatisfiedBy(Pattern.java:3742)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3715)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Loop.match(Pattern.java:4683)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615)
at java.util.regex.Pattern$Curly.match0(Pattern.java:4170)
at java.util.regex.Pattern$Curly.match(Pattern.java:4132)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3715)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Loop.match(Pattern.java:4683)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615)
I've downloaded the CruiseControl source code and found that there's relatively few places where the Pattern class is used. The relevant one for us is a class called TeamFoundationServer (there's also similar classes for Git and Mercurial). It looks like the error occurs when the class is trying to fetch the modifications since the last build by calling the command line client like this:
tf.exe history "itemspec" /noprompt /server:http://mytfsserver:8080/tfs/ /recursive /format:detailed /version:D2015-04-08T16:45:00Z~D2015-04-08T23:59:59Z
I'm guessing that since this is the first build of the project in CruiseControl, that has something to do with it, but I'm not sure why. I think I've gotten most of the way through this problem, but am stuck at this point.
How do I get around this?
Not the best answer, but one that works. I commented out the "modificationset" element and restarted CruiseControl. It seems to be building my new project now. I'll uncomment the element after the build completes. I'd still like a better answer if someone has one.