]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-18917 Fix migration failure and support user_token without project key
authorLéo Geoffroy <leo.geoffroy@sonarsource.com>
Thu, 4 May 2023 15:02:14 +0000 (17:02 +0200)
committersonartech <sonartech@sonarsource.com>
Thu, 4 May 2023 20:03:11 +0000 (20:03 +0000)
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v101/RemoveOrphanUserTokens.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v101/RemoveOrphanUserTokensTest.java

index 9345262d5039ffb29b2b1e98f45f1c297b7eb1a8..18eeabb94c913af97c790b1e73a5cc4fce66c471 100644 (file)
@@ -31,7 +31,7 @@ public class RemoveOrphanUserTokens extends DataChange {
     SELECT ut.uuid as tokenUuid
     FROM user_tokens ut
     LEFT OUTER JOIN projects p ON ut.project_key = p.kee
-    WHERE p.uuid is null
+    WHERE p.uuid is null and ut.project_key IS NOT NULL
     """;
 
   public RemoveOrphanUserTokens(Database db) {
@@ -44,7 +44,7 @@ public class RemoveOrphanUserTokens extends DataChange {
       if (DatabaseUtils.tableColumnExists(connection, "user_tokens", "project_key")) {
         MassUpdate massUpdate = context.prepareMassUpdate();
         massUpdate.select(SELECT_QUERY);
-        massUpdate.update("delete user_tokens where uuid = ?");
+        massUpdate.update("delete from user_tokens where uuid = ?");
         massUpdate.execute((row, update) -> {
           String uuid = row.getString(1);
           update.setString(1, uuid);
@@ -53,4 +53,4 @@ public class RemoveOrphanUserTokens extends DataChange {
       }
     }
   }
-}
\ No newline at end of file
+}
index b659b6b722d5a7254e3bd73b02488fc23c0622d7..be11ab3ff84963ae227d7a6b0ada07f06e19973e 100644 (file)
@@ -22,12 +22,12 @@ package org.sonar.server.platform.db.migration.version.v101;
 import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.junit.Rule;
 import org.junit.Test;
 import org.sonar.core.util.UuidFactory;
 import org.sonar.core.util.UuidFactoryFast;
 import org.sonar.db.CoreDbTester;
-import org.sonar.server.platform.db.migration.sql.DropColumnsBuilder;
 import org.sonar.server.platform.db.migration.step.DataChange;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -46,11 +46,12 @@ public class RemoveOrphanUserTokensTest {
 
     String token1Uuid = insertUserToken("project1");
     String token2Uuid = insertUserToken("orphan");
+    String token3Uuid = insertUserToken(null);
 
     underTest.execute();
     assertThat(db.select("select * from user_tokens"))
       .extracting(r -> r.get("UUID"))
-      .containsOnly(token1Uuid);
+      .containsOnly(token1Uuid, token3Uuid);
   }
 
   @Test
@@ -68,7 +69,7 @@ public class RemoveOrphanUserTokensTest {
       .containsOnly(token1Uuid);
   }
 
-  private String insertUserToken(String projectKey) {
+  private String insertUserToken( @Nullable String projectKey) {
     Map<String, Object> map = new HashMap<>();
     String uuid = uuidFactory.create();
     map.put("UUID", uuid);
@@ -94,4 +95,4 @@ public class RemoveOrphanUserTokensTest {
     db.executeInsert("projects", map);
     return uuid;
   }
-}
\ No newline at end of file
+}