From 1b84be0cba036bc7d782f9191874bf144c6fe534 Mon Sep 17 00:00:00 2001 From: Julien HENRY Date: Thu, 1 May 2014 00:15:44 +0200 Subject: [PATCH] SONAR-3437 Enable batch mode when saving measures into DB --- .../org/sonar/batch/index/MeasurePersister.java | 13 +++++-------- .../org/sonar/batch/index/MeasurePersisterTest.java | 4 ++-- .../org/sonar/api/database/model/MeasureMapper.xml | 2 +- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java index 09dfd493df2..2edf522df7a 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java +++ b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java @@ -20,7 +20,6 @@ package org.sonar.batch.index; import com.google.common.annotations.VisibleForTesting; -import org.apache.ibatis.session.SqlSession; import org.sonar.api.database.model.MeasureMapper; import org.sonar.api.database.model.MeasureModel; import org.sonar.api.database.model.Snapshot; @@ -35,6 +34,7 @@ import org.sonar.api.technicaldebt.batch.Characteristic; import org.sonar.api.utils.SonarException; import org.sonar.batch.index.Cache.Entry; import org.sonar.batch.scan.measure.MeasureCache; +import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.MyBatis; public final class MeasurePersister implements ScanPersister { @@ -55,7 +55,7 @@ public final class MeasurePersister implements ScanPersister { @Override public void persist() { - SqlSession session = mybatis.openSession(); + DbSession session = mybatis.openSession(true); try { MeasureMapper mapper = session.getMapper(MeasureMapper.class); @@ -67,16 +67,13 @@ public final class MeasurePersister implements ScanPersister { if (shouldPersistMeasure(resource, measure)) { Snapshot snapshot = snapshotCache.get(effectiveKey); MeasureModel measureModel = model(measure).setSnapshotId(snapshot.getId()); - try { - mapper.insert(measureModel); - } catch (Exception e) { - // SONAR-4066 - throw new SonarException(String.format("Unable to save measure for metric [%s] on component [%s]", measure.getMetricKey(), resource.getKey()), e); - } + mapper.insert(measureModel); } } session.commit(); + } catch (Exception e) { + throw new SonarException("Unable to save some measures", e); } finally { MyBatis.closeQuietly(session); } diff --git a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java index f0a2bb666aa..feb8094889b 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java @@ -97,14 +97,14 @@ public class MeasurePersisterTest extends AbstractDaoTestCase { } @Test - public void should_display_contextual_info_when_error_during_insert_measure() { + public void should_display_message_when_error_during_insert_measure() { setupData("empty"); Measure measure = new Measure(ncloc()).setValue(1234.0).setAlertText(TOO_LONG); when(measureCache.entries()).thenReturn(Arrays.asList(new Cache.Entry(new String[] {"foo", "ncloc"}, measure))); thrown.expect(SonarException.class); - thrown.expectMessage("Unable to save measure for metric [ncloc] on component [foo]"); + thrown.expectMessage("Unable to save some measures"); measurePersister.persist(); } diff --git a/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml b/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml index 6cb43d9509b..6ac04e44508 100644 --- a/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml +++ b/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml @@ -3,7 +3,7 @@ - + INSERT INTO project_measures ( value, metric_id, snapshot_id, rule_id, text_value, tendency, measure_date, project_id, alert_status, alert_text, url, description, rule_priority, characteristic_id, variation_value_1, -- 2.39.5