Browse Source

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
tags/7.5
Eric Hartmann 6 years ago
parent
commit
13fa00a308
1 changed files with 3 additions and 2 deletions
  1. 3
    2
      server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java

+ 3
- 2
server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java View 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);
}


Loading…
Cancel
Save