]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5827 Disable batch session when inserting in file_sources to avoid OOM
authorJulien HENRY <julien.henry@sonarsource.com>
Tue, 2 Dec 2014 13:29:14 +0000 (14:29 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Tue, 2 Dec 2014 13:30:07 +0000 (14:30 +0100)
sonar-batch/src/main/java/org/sonar/batch/index/DuplicationPersister.java
sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java

index 4e5ebce1ef10c938af3966fc82d9f003f7ec7a1b..ae234e553cfa94e8f86026e69a22a23053865a11 100644 (file)
@@ -71,10 +71,9 @@ public final class DuplicationPersister implements ScanPersister {
           Snapshot snapshot = snapshotCache.get(effectiveKey);
           MeasureModel measureModel = MeasurePersister.model(measure, ruleFinder).setSnapshotId(snapshot.getId());
           mapper.insert(measureModel);
+          session.commit();
         }
       }
-
-      session.commit();
     } catch (Exception e) {
       throw new IllegalStateException("Unable to save some measures", e);
     } finally {
index ae3871992888a10da12bbfea7346b4facc0f51ec..edd0c01da3f5a002390aba4f1501dda58a0b07b9 100644 (file)
@@ -121,7 +121,8 @@ public class SourcePersister implements ScanPersister {
 
   @Override
   public void persist() {
-    DbSession session = mybatis.openSession(true);
+    // Don't use batch insert for file_sources since keeping all data in memory can produce OOM for big files
+    DbSession session = mybatis.openSession(false);
     try {
 
       final Map<String, FileSourceDto> fileSourceDtoByFileUuid = new HashMap<String, FileSourceDto>();