]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5755 Read projects in cursor mode
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 28 Oct 2014 14:25:17 +0000 (15:25 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 28 Oct 2014 14:38:06 +0000 (15:38 +0100)
server/sonar-server/src/main/java/org/sonar/server/db/migrations/v50/PopulateProjectsUuidColumnsMigration.java

index e5ad598c6bb5149ca682ab1dcbc5f6ce9663fe46..67173b47e1e582620ad0b7519001ee19dcfd511a 100644 (file)
@@ -22,6 +22,8 @@ package org.sonar.server.db.migrations.v50;
 
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
+import org.apache.ibatis.session.ResultContext;
+import org.apache.ibatis.session.ResultHandler;
 import org.sonar.api.resources.Scopes;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.migration.v50.Component;
@@ -59,21 +61,23 @@ public class PopulateProjectsUuidColumnsMigration implements DatabaseMigration {
     Timer timer = new Timer("Db Migration Progress");
     timer.schedule(progressTask, MassUpdate.ProgressTask.PERIOD_MS, MassUpdate.ProgressTask.PERIOD_MS);
 
-    DbSession session = db.openSession(true);
+    final DbSession session = db.openSession(true);
     try {
-      Migration50Mapper mapper = session.getMapper(Migration50Mapper.class);
-
-      for (Component project : mapper.selectRootProjects()) {
-        Map<Long, String> uuidByComponentId = newHashMap();
-        migrateEnabledComponents(session, mapper, project, uuidByComponentId);
-        migrateDisabledComponents(session, mapper, project, uuidByComponentId);
-      }
+      final Migration50Mapper mapper = session.getMapper(Migration50Mapper.class);
+      session.select("org.sonar.core.persistence.migration.v50.Migration50Mapper.selectRootProjects", new ResultHandler() {
+        @Override
+        public void handleResult(ResultContext context) {
+          Component project = (Component) context.getResultObject();
+          Map<Long, String> uuidByComponentId = newHashMap();
+          migrateEnabledComponents(session, mapper, project, uuidByComponentId);
+          migrateDisabledComponents(session, mapper, project, uuidByComponentId);
+        }
+      });
       migrateComponentsWithoutUuid(session, mapper);
 
       session.commit();
       // log the total number of process rows
       progressTask.log();
-
     } finally {
       session.close();
       timer.cancel();