diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2019-05-04 09:43:24 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2019-05-06 11:01:16 +0200 |
commit | baf8ce1ddc8136eaf3dac8424830b8960991ee21 (patch) | |
tree | d89907876a91f446fcba3e101526c54cff22e09f /sonar-core/src/main | |
parent | 18054cb90101629237e6876e7e5334badd54084f (diff) | |
download | sonarqube-baf8ce1ddc8136eaf3dac8424830b8960991ee21.tar.gz sonarqube-baf8ce1ddc8136eaf3dac8424830b8960991ee21.zip |
SONAR-12078 out of memory in CE if file has too many issues
Diffstat (limited to 'sonar-core/src/main')
-rw-r--r-- | sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java b/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java index 652b27c07e2..20b78655d1c 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/tracking/BlockRecognizer.java @@ -77,7 +77,7 @@ class BlockRecognizer<RAW extends Trackable, BASE extends Trackable> { } // Check if remaining number of lines exceeds threshold. It avoids processing too many combinations. - if (basesByLine.keySet().size() * rawsByLine.keySet().size() >= 250_000) { + if (isOverLimit(basesByLine.keySet().size(), rawsByLine.keySet().size())) { return; } @@ -97,6 +97,10 @@ class BlockRecognizer<RAW extends Trackable, BASE extends Trackable> { } } + static boolean isOverLimit(long a, long b) { + return Math.multiplyExact(a, b) >= 250_000; + } + /** * @param startLineA number of line from first version of text (numbering starts from 1) * @param startLineB number of line from second version of text (numbering starts from 1) |