]> source.dussan.org Git - sonarqube.git/commitdiff
Enfore TransactionIsolationLevel.READ_COMMITTED
authorEric Hartmann <hartmann.eric@gmail.com>
Tue, 17 Apr 2018 11:19:49 +0000 (13:19 +0200)
committerSonarTech <sonartech@sonarsource.com>
Thu, 19 Apr 2018 18:20:45 +0000 (20:20 +0200)
By default, all supported databases but MySQL are using this
isolation level. However, without setting this property, gap
locks may appear in MySQL :

https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html#innodb-gap-locks

server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java

index 187c5922e21d4b79ae90c5eba2e26e9b6721d7c0..269d7aef70b0c0f2505443fd8ecaa55c73845171 100644 (file)
@@ -28,6 +28,7 @@ import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.apache.ibatis.session.TransactionIsolationLevel;
 import org.sonar.api.Startable;
 import org.sonar.db.ce.CeActivityMapper;
 import org.sonar.db.ce.CeQueueMapper;
@@ -267,10 +268,10 @@ public class MyBatis implements Startable {
 
   public DbSession openSession(boolean batch) {
     if (batch) {
-      SqlSession session = sessionFactory.openSession(ExecutorType.BATCH);
+      SqlSession session = sessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED);
       return new BatchSession(session);
     }
-    SqlSession session = sessionFactory.openSession(ExecutorType.REUSE);
+    SqlSession session = sessionFactory.openSession(ExecutorType.REUSE, TransactionIsolationLevel.READ_COMMITTED);
     return new DbSessionImpl(session);
   }