From 13fa00a308984cd58ec86b380addb23b6ecfe0d5 Mon Sep 17 00:00:00 2001 From: Eric Hartmann Date: Tue, 17 Apr 2018 13:19:49 +0200 Subject: [PATCH] Enfore TransactionIsolationLevel.READ_COMMITTED 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 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java index 187c5922e21..269d7aef70b 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java @@ -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); } -- 2.39.5