A very long string inside a file will cause a java.lang.StackOverflowError for files in repository when trying to view the source of this file or trying to add it to a review.
The following is shown in the logs:
2014-09-02 17:47:41,707 WARN [qtp1829860190-171 ] org.eclipse.jetty.servlet.ServletHandler ServletHandler-doHandle - Error for /browse/merc/WFScheduleXMLTest.cs java.lang.StackOverflowError at java.util.regex.Pattern$LazyLoop.match(Pattern.java:4730) at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615) at java.util.regex.Pattern$BranchConn.match(Pattern.java:4466) at java.util.regex.Pattern$CharProperty.match(Pattern.java:3694) at java.util.regex.Pattern$Branch.match(Pattern.java:4502) at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556) (...)
Steps to Reproduce
- Create a file which highlights a string (in my test I used a .cs file).
- Define a long string (e.g. assigning it to a variable).
- Save and commit it to the repository.
- Have this file indexed by FishEye and try viewing its content.
The file used to test this is attached (test.cs).
Workaround
- Break the long line in smaller lines.
OR
- Increase the thread stack size by increasing the -Xss JVM parameter (e.g. "-Xss2m"). This can be set in the FISHEYE_OPTS environment variable (refer to Environment Variables for further information on this). Please notice that increasing the thread stack size will allocate more memory for each thread, so Out of Memory errors may happen after increasing this setting if you do not have enough memory allocated for FishEye.