]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11062 Analysis task fails when thread failed previously with OOM
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 20 Jul 2018 09:36:47 +0000 (11:36 +0200)
committerSonarTech <sonartech@sonarsource.com>
Sat, 21 Jul 2018 18:21:15 +0000 (20:21 +0200)
server/sonar-server-common/src/main/java/org/sonar/server/organization/DefaultOrganizationProviderImpl.java
server/sonar-server-common/src/test/java/org/sonar/server/organization/DefaultOrganizationProviderImplTest.java

index 72ef09bed1f65b353e833d5ac065e00576c988be..75caebe851cce172939c3574750a2162b09a78d6 100644 (file)
@@ -70,10 +70,6 @@ public class DefaultOrganizationProviderImpl implements DefaultOrganizationProvi
 
   @Override
   public void load() {
-    checkState(
-      CACHE.get() == null,
-      "load called twice for thread '%s' or state wasn't cleared last time it was used",
-      Thread.currentThread().getName());
     CACHE.set(new Cache());
   }
 
index 75ef3d76540ac098040690a4bc397516224a4a53..cc3f33da32b8ea153aaf508d3e50e72782b21880 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.server.organization;
 
+import org.junit.After;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -29,7 +30,6 @@ import org.sonar.db.DbTester;
 import org.sonar.db.organization.OrganizationDto;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.sonar.db.organization.OrganizationTesting.newOrganizationDto;
@@ -54,6 +54,11 @@ public class DefaultOrganizationProviderImplTest {
 
   private DefaultOrganizationProviderImpl underTest = new DefaultOrganizationProviderImpl(dbClient);
 
+  @After
+  public void tearDown() {
+    underTest.unload();
+  }
+
   @Test
   public void get_fails_with_ISE_if_default_organization_internal_property_does_not_exist() {
     expectISENoDefaultOrganizationUuid();
@@ -116,17 +121,17 @@ public class DefaultOrganizationProviderImplTest {
   }
 
   @Test
-  public void load_fails_with_ISE_when_called_twice_without_unload_in_between() {
+  public void load_resets_thread_local_when_called_twice() {
+    insertOrganization(ORGANIZATION_DTO_1, DATE_1);
+    dbClient.internalPropertiesDao().save(dbSession, DEFAULT_ORGANIZATION, ORGANIZATION_DTO_1.getUuid());
+    dbSession.commit();
+
     underTest.load();
+    DefaultOrganization org1 = underTest.get();
 
-    try {
-      underTest.load();
-      fail("A IllegalStateException should have been raised");
-    } catch (IllegalStateException e) {
-      assertThat(e).hasMessage("load called twice for thread '" + Thread.currentThread().getName() + "' or state wasn't cleared last time it was used");
-    } finally {
-      underTest.unload();
-    }
+    underTest.load();
+    DefaultOrganization org2 = underTest.get();
+    assertThat(org1).isNotSameAs(org2);
   }
 
   @Test