aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server-common
diff options
context:
space:
mode:
authorMichal Duda <michal.duda@sonarsource.com>2020-12-15 01:05:54 +0100
committersonartech <sonartech@sonarsource.com>2020-12-22 20:09:37 +0000
commit019d8c66ada8a01c96733bed0c771a8b88cfe3cd (patch)
treeebd597656341088edfa720a807170a8da00ce289 /server/sonar-server-common
parenta8cd264afd2a7532ee0f3d9809db2d5cb8c32e6e (diff)
downloadsonarqube-019d8c66ada8a01c96733bed0c771a8b88cfe3cd.tar.gz
sonarqube-019d8c66ada8a01c96733bed0c771a8b88cfe3cd.zip
SONAR-13999 removed OrganizationMemberDao
Diffstat (limited to 'server/sonar-server-common')
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserDoc.java2
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserIndexer.java29
-rw-r--r--server/sonar-server-common/src/test/java/org/sonar/server/user/index/UserIndexerTest.java48
3 files changed, 27 insertions, 52 deletions
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserDoc.java b/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserDoc.java
index 8b81ee0e363..6ed3cc26b23 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserDoc.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserDoc.java
@@ -102,6 +102,8 @@ public class UserDoc extends BaseDoc {
return this;
}
+ // TODO remove
+ @Deprecated
public UserDoc setOrganizationUuids(@Nullable List<String> organizationUuids) {
setField(FIELD_ORGANIZATION_UUIDS, organizationUuids);
return this;
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserIndexer.java b/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserIndexer.java
index 054b9ccc3d9..0be11278ba0 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserIndexer.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/user/index/UserIndexer.java
@@ -19,12 +19,11 @@
*/
package org.sonar.server.user.index;
-import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ListMultimap;
import com.google.common.collect.Maps;
import java.util.Collection;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import org.elasticsearch.action.index.IndexRequest;
import org.sonar.core.util.stream.MoreCollectors;
@@ -41,6 +40,7 @@ import org.sonar.server.es.IndexingResult;
import org.sonar.server.es.OneToOneResilientIndexingListener;
import org.sonar.server.es.ResilientIndexer;
+import static com.google.common.base.Preconditions.checkState;
import static java.util.Collections.singletonList;
import static org.sonar.core.util.stream.MoreCollectors.toHashSet;
import static org.sonar.core.util.stream.MoreCollectors.toList;
@@ -72,15 +72,17 @@ public class UserIndexer implements ResilientIndexer {
private void indexAll(Size bulkSize) {
try (DbSession dbSession = dbClient.openSession(false)) {
- ListMultimap<String, String> organizationUuidsByUserUuid = ArrayListMultimap.create();
- dbClient.organizationMemberDao().selectAllForUserIndexing(dbSession, organizationUuidsByUserUuid::put);
-
BulkIndexer bulkIndexer = newBulkIndexer(bulkSize, IndexingListener.FAIL_ON_ERROR);
bulkIndexer.start();
+
+ // TODO remove this after removing the need for organization uuids in the user index
+ Optional<String> defaultOrgUuid = dbClient.internalPropertiesDao().selectByKey(dbSession, "organization.default");
+ checkState(defaultOrgUuid.isPresent() && !defaultOrgUuid.get().isEmpty(), "No Default organization uuid configured");
+
dbClient.userDao().scrollAll(dbSession,
// only index requests, no deletion requests.
// Deactivated users are not deleted but updated.
- u -> bulkIndexer.add(newIndexRequest(u, organizationUuidsByUserUuid)));
+ u -> bulkIndexer.add(newIndexRequest(u, defaultOrgUuid.get())));
bulkIndexer.stop();
}
}
@@ -121,17 +123,19 @@ public class UserIndexer implements ResilientIndexer {
.map(EsQueueDto::getDocId)
.collect(toHashSet(items.size()));
- ListMultimap<String, String> organizationUuidsByUserUuid = ArrayListMultimap.create();
- dbClient.organizationMemberDao().selectForUserIndexing(dbSession, uuids, organizationUuidsByUserUuid::put);
-
BulkIndexer bulkIndexer = newBulkIndexer(Size.REGULAR, new OneToOneResilientIndexingListener(dbClient, dbSession, items));
bulkIndexer.start();
+
+ // TODO remove this after removing the need for organization uuids in the user index
+ Optional<String> defaultOrgUuid = dbClient.internalPropertiesDao().selectByKey(dbSession, "organization.default");
+ checkState(defaultOrgUuid.isPresent() && !defaultOrgUuid.get().isEmpty(), "No Default organization uuid configured");
+
dbClient.userDao().scrollByUuids(dbSession, uuids,
// only index requests, no deletion requests.
// Deactivated users are not deleted but updated.
u -> {
uuids.remove(u.getUuid());
- bulkIndexer.add(newIndexRequest(u, organizationUuidsByUserUuid));
+ bulkIndexer.add(newIndexRequest(u, defaultOrgUuid.get()));
});
// the remaining uuids reference rows that don't exist in db. They must
@@ -144,7 +148,8 @@ public class UserIndexer implements ResilientIndexer {
return new BulkIndexer(esClient, TYPE_USER, bulkSize, listener);
}
- private static IndexRequest newIndexRequest(UserDto user, ListMultimap<String, String> organizationUuidsByUserUuid) {
+ // TODO remove defaultOrg method param and dto.setOrganizationUuids call
+ private static IndexRequest newIndexRequest(UserDto user, String defaultOrgUuid) {
UserDoc doc = new UserDoc(Maps.newHashMapWithExpectedSize(8));
// all the keys must be present, even if value is null
doc.setUuid(user.getUuid());
@@ -153,7 +158,7 @@ public class UserIndexer implements ResilientIndexer {
doc.setEmail(user.getEmail());
doc.setActive(user.isActive());
doc.setScmAccounts(UserDto.decodeScmAccounts(user.getScmAccounts()));
- doc.setOrganizationUuids(organizationUuidsByUserUuid.get(user.getUuid()));
+ doc.setOrganizationUuids(singletonList(defaultOrgUuid));
return doc.toIndexRequest();
}
diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/user/index/UserIndexerTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/user/index/UserIndexerTest.java
index 79c347017b4..b9f4a4cbbc0 100644
--- a/server/sonar-server-common/src/test/java/org/sonar/server/user/index/UserIndexerTest.java
+++ b/server/sonar-server-common/src/test/java/org/sonar/server/user/index/UserIndexerTest.java
@@ -25,7 +25,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
-import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.user.UserDto;
import org.sonar.server.es.EsTester;
@@ -37,7 +36,7 @@ import static org.sonar.server.user.index.UserIndexDefinition.TYPE_USER;
public class UserIndexerTest {
- private System2 system2 = System2.INSTANCE;
+ private final System2 system2 = System2.INSTANCE;
@Rule
public DbTester db = DbTester.create(system2);
@@ -45,7 +44,7 @@ public class UserIndexerTest {
@Rule
public EsTester es = EsTester.create();
- private UserIndexer underTest = new UserIndexer(db.getDbClient(), es.client());
+ private final UserIndexer underTest = new UserIndexer(db.getDbClient(), es.client());
@Test
public void index_nothing_on_startup() {
@@ -69,7 +68,7 @@ public class UserIndexerTest {
assertThat(doc.email()).isEqualTo(user.getEmail());
assertThat(doc.active()).isEqualTo(user.isActive());
assertThat(doc.scmAccounts()).isEqualTo(user.getScmAccountsAsList());
- assertThat(doc.organizationUuids()).isEmpty();
+ assertThat(doc.organizationUuids()).containsExactly(db.getDefaultOrganization().getUuid());
}
@Test
@@ -87,16 +86,12 @@ public class UserIndexerTest {
assertThat(doc.email()).isEqualTo(user.getEmail());
assertThat(doc.active()).isEqualTo(user.isActive());
assertThat(doc.scmAccounts()).isEqualTo(user.getScmAccountsAsList());
- assertThat(doc.organizationUuids()).isEmpty();
+ assertThat(doc.organizationUuids()).containsExactly(db.getDefaultOrganization().getUuid());
}
@Test
- public void indexOnStartup_adds_all_users_with_organizations() {
- OrganizationDto organization1 = db.organizations().insert();
- OrganizationDto organization2 = db.organizations().insert();
+ public void indexOnStartup_adds_all_users() {
UserDto user = db.users().insertUser();
- db.organizations().addMember(organization1, user);
- db.organizations().addMember(organization2, user);
underTest.indexOnStartup(new HashSet<>());
@@ -105,7 +100,7 @@ public class UserIndexerTest {
UserDoc doc = docs.get(0);
assertThat(doc.uuid()).isEqualTo(user.getUuid());
assertThat(doc.login()).isEqualTo(user.getLogin());
- assertThat(doc.organizationUuids()).containsExactlyInAnyOrder(organization1.getUuid(), organization2.getUuid());
+ assertThat(doc.organizationUuids()).containsExactly(db.getDefaultOrganization().getUuid());
}
@Test
@@ -123,36 +118,9 @@ public class UserIndexerTest {
}
@Test
- public void commitAndIndex_single_user_belonging_to_organizations() {
- OrganizationDto organization1 = db.organizations().insert();
- OrganizationDto organization2 = db.organizations().insert();
- UserDto user = db.users().insertUser();
- db.organizations().addMember(organization1, user);
- db.organizations().addMember(organization2, user);
- UserDto anotherUser = db.users().insertUser();
- db.organizations().addMember(organization1, anotherUser);
-
- underTest.commitAndIndex(db.getSession(), user);
-
- List<UserDoc> docs = es.getDocuments(TYPE_USER, UserDoc.class);
- assertThat(docs).hasSize(1);
-
- UserDoc userDoc = docs.get(0);
- assertThat(userDoc.uuid())
- .isEqualTo(user.getUuid());
-
- assertThat(userDoc.organizationUuids())
- .containsExactlyInAnyOrder(organization1.getUuid(), organization2.getUuid());
- }
-
- @Test
public void commitAndIndex_multiple_users() {
- OrganizationDto organization1 = db.organizations().insert();
UserDto user1 = db.users().insertUser();
- db.organizations().addMember(organization1, user1);
- OrganizationDto organization2 = db.organizations().insert();
UserDto user2 = db.users().insertUser();
- db.organizations().addMember(organization2, user2);
underTest.commitAndIndex(db.getSession(), asList(user1, user2));
@@ -160,8 +128,8 @@ public class UserIndexerTest {
assertThat(docs)
.extracting(UserDoc::login, UserDoc::organizationUuids)
.containsExactlyInAnyOrder(
- tuple(user1.getLogin(), singletonList(organization1.getUuid())),
- tuple(user2.getLogin(), singletonList(organization2.getUuid())));
+ tuple(user1.getLogin(), singletonList(db.getDefaultOrganization().getUuid())),
+ tuple(user2.getLogin(), singletonList(db.getDefaultOrganization().getUuid())));
assertThat(db.countRowsOfTable(db.getSession(), "users")).isEqualTo(2);
}
}