-
Suggestion
-
Resolution: Unresolved
-
None
-
None
Problem
In some circumstances it may happen that a search for file paths (e.g. when user uses a quick search box) is very resource intensive in Fisheye. This can result in CPU saturation, high heap memory consumption or even OOME error leading to application crash.
This is caused by a fact that file paths are being searched for both the exact string entered by a user as well as for a camel-case pattern. For example, entering a text "ABCc" Fisheye can find files like "ABCc.java" as well as "AaaaBbbbCccc.java". In order to find camel-case matches, Fisheye extracts all terms matching given prefixes. This might result in a very complex Lucene query constructed when there are many matches (tens of thousands).
Note: a search is performed in a cross-repository Lucene index (globalfe/idx0).
Symptoms
1. Search for file paths takes seconds or minutes instead of miliseconds, see the TTFB on the network activity in a browser. Example:
2. High heap consumption. Heap dumps shows large amounts of data allocated in qtp-* threads and occupied by Lucene classes. Example:
3. High CPU activity.
Suggested solution
Add a JVM fisheye property which will allow to disable camel-case search for file paths.