diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationCreationImpl.java b/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationCreationImpl.java index 37a869d3f528..4f98271112e9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationCreationImpl.java +++ b/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationCreationImpl.java @@ -95,11 +95,14 @@ public OrganizationDto create(DbSession dbSession, int creatorUserId, NewOrganiz insertOrganizationMember(dbSession, organization, creatorUserId); GroupDto group = insertOwnersGroup(dbSession, organization); insertDefaultTemplate(dbSession, organization, group); - insertQualityProfiles(dbSession, organization); + List activeRuleChanges = insertQualityProfiles(dbSession, organization); addCurrentUserToGroup(dbSession, group, creatorUserId); dbSession.commit(); + // Elasticsearch is updated when DB session is committed + activeRuleIndexer.index(activeRuleChanges); + return organization; } @@ -126,10 +129,13 @@ public Optional createForUser(DbSession dbSession, UserDto newU .forEach(p -> insertUserPermissions(dbSession, newUser, organization, p)); insertPersonalOrgDefaultTemplate(dbSession, organization); insertOrganizationMember(dbSession, organization, newUser.getId()); - insertQualityProfiles(dbSession, organization); + List activeRuleChanges = insertQualityProfiles(dbSession, organization); dbSession.commit(); + // Elasticsearch is updated when DB session is committed + activeRuleIndexer.index(activeRuleChanges); + return Optional.of(organization); } @@ -242,13 +248,13 @@ private void insertGroupPermission(DbSession dbSession, PermissionTemplateDto te dbClient.permissionTemplateDao().insertGroupPermission(dbSession, template.getId(), group == null ? null : group.getId(), permission); } - private void insertQualityProfiles(DbSession dbSession, OrganizationDto organization) { + private List insertQualityProfiles(DbSession dbSession, OrganizationDto organization) { List changes = new ArrayList<>(); definedQProfileRepository.getQProfilesByLanguage().entrySet() .stream() .flatMap(entry -> entry.getValue().stream()) .forEach(profile -> insertQualityProfile(dbSession, profile, organization, changes)); - activeRuleIndexer.index(changes); + return changes; } private void insertQualityProfile(DbSession dbSession, DefinedQProfile profile, OrganizationDto organization, List changes) {