]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-22649 Add support for concurrent usage of dbTester.
authorSteve Marion <steve.marion@sonarsource.com>
Wed, 31 Jul 2024 09:28:32 +0000 (11:28 +0200)
committersonartech <sonartech@sonarsource.com>
Mon, 12 Aug 2024 20:02:46 +0000 (20:02 +0000)
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/DbTester.java

index c9e8783b46e05da1f4bddc98496a5929ee6b5583..8e34db0f454dbba971c3282bcff23df2cb968792 100644 (file)
@@ -66,7 +66,7 @@ public class DbTester extends AbstractDbTester<TestDbImpl> {
   private final System2 system2;
   private final AuditPersister auditPersister;
   private DbClient client;
-  private DbSession session = null;
+  ThreadLocal<DbSession> session = new ThreadLocal<>();
   private final UserDbTester userTester;
   private final ComponentDbTester componentTester;
   private final ProjectLinkDbTester componentLinkTester;
@@ -250,18 +250,19 @@ public class DbTester extends AbstractDbTester<TestDbImpl> {
 
   @Override
   protected void after() {
-    if (session != null) {
-      session.rollback();
-      session.close();
+    if (session.get() != null) {
+      session.get().rollback();
+      session.get().close();
+      session.remove();
     }
     db.stop();
   }
 
   public DbSession getSession() {
-    if (session == null) {
-      session = db.getMyBatis().openSession(false);
+    if (session.get() == null) {
+      session.set(db.getMyBatis().openSession(false));
     }
-    return session;
+    return session.get();
   }
 
   public void commit() {