]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-12398 fix too long lock name for Portfolio Refresh
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 16 Sep 2019 09:23:58 +0000 (11:23 +0200)
committerSonarTech <sonartech@sonarsource.com>
Thu, 17 Oct 2019 13:24:49 +0000 (15:24 +0200)
which prevented the whole feature to actually work

server/sonar-db-dao/src/main/java/org/sonar/db/property/InternalPropertiesDao.java
server/sonar-db-dao/src/test/java/org/sonar/db/property/InternalPropertiesDaoTest.java

index 8d2dfadac251cdb2f83b7dec6fbd81198e16a55b..33ea63fb2950c16f7887e1903eda5aa1289de4d1 100644 (file)
@@ -46,7 +46,7 @@ public class InternalPropertiesDao implements Dao {
   /**
    * A common prefix used by locks. {@see InternalPropertiesDao#tryLock}
    */
-  public static final String LOCK_PREFIX = "lock.";
+  private static final String LOCK_PREFIX = "lock.";
 
   static final int KEY_MAX_LENGTH = 20;
   private static final int TEXT_VALUE_MAX_LENGTH = 4000;
@@ -192,7 +192,7 @@ public class InternalPropertiesDao implements Dao {
    * The lock is considered released when the specified duration has elapsed.
    */
   public boolean tryLock(DbSession dbSession, String name, int maxAgeInSeconds) {
-    String key = LOCK_PREFIX + '.' + name;
+    String key = LOCK_PREFIX + name;
     if (key.length() > KEY_MAX_LENGTH) {
       throw new IllegalArgumentException("lock name is too long");
     }
index c995168d02af1314b280dc59bbdc5b8273ad9b2e..01fc23dc6804047d6ca64c5187a18d3c7aec3158 100644 (file)
@@ -55,7 +55,6 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 import static org.sonar.db.property.InternalPropertiesDao.KEY_MAX_LENGTH;
-import static org.sonar.db.property.InternalPropertiesDao.LOCK_PREFIX;
 
 public class InternalPropertiesDaoTest {
 
@@ -486,15 +485,15 @@ public class InternalPropertiesDaoTest {
 
   @Test
   public void tryLock_throws_if_lock_name_would_produce_too_long_key() {
-    String tooLongName = randomAlphabetic(KEY_MAX_LENGTH - LOCK_PREFIX.length());
+    String tooLongName = randomAlphabetic(KEY_MAX_LENGTH - "lock.".length() + (1 + new Random().nextInt(50)));
 
     expectedException.expect(IllegalArgumentException.class);
     expectedException.expectMessage("lock name is too long");
     underTest.tryLock(dbSession, tooLongName, 60);
   }
 
-  private String key(String name) {
-    return LOCK_PREFIX + '.' + name;
+  private static String key(String name) {
+    return "lock." + name;
   }
 
   private void expectKeyNullOrEmptyIAE() {