private static EsQueueDto newQueueDto(String docId, String docIdType, @Nullable String routing) { return EsQueueDto.create(INDEX_TYPE_ACTIVE_RULE.format(), docId, docIdType, routing); } }
private static EsQueueDto createQueueDto(String docId, String docIdType, String projectUuid) { return EsQueueDto.create(INDEX_TYPE_ISSUE.format(), docId, docIdType, projectUuid); }
private Collection<EsQueueDto> insertIntoEsQueue(DbSession dbSession, Collection<String> projectUuids) { List<EsQueueDto> items = indexTypes.stream() .flatMap(indexType -> projectUuids.stream().map(projectUuid -> EsQueueDto.create(indexType.format(), projectUuid, null, projectUuid))) .collect(toArrayList()); dbClient.esQueueDao().insert(dbSession, items); return items; }
public void commitAndIndex(DbSession dbSession, Collection<UserDto> users) { List<String> uuids = users.stream().map(UserDto::getUuid).collect(toList()); List<EsQueueDto> items = uuids.stream() .map(uuid -> EsQueueDto.create(INDEX_TYPE_USER.format(), uuid)) .collect(MoreCollectors.toArrayList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); postCommit(dbSession, users.stream().map(UserDto::getLogin).collect(toList()), items); }
@Override public Collection<EsQueueDto> prepareForRecovery(DbSession dbSession, Collection<String> projectUuids, Cause cause) { switch (cause) { case MEASURE_CHANGE: case PROJECT_TAGS_UPDATE: case PERMISSION_CHANGE: // measures, tags and permissions are not part of type components/component return emptyList(); case PROJECT_CREATION: case PROJECT_DELETION: case PROJECT_KEY_UPDATE: List<EsQueueDto> items = projectUuids.stream() .map(branchUuid -> EsQueueDto.create(INDEX_TYPE_COMPONENT.format(), branchUuid, null, branchUuid)) .collect(MoreCollectors.toArrayList(projectUuids.size())); return dbClient.esQueueDao().insert(dbSession, items); default: // defensive case throw new IllegalStateException("Unsupported cause: " + cause); } }
@Override public Collection<EsQueueDto> prepareForRecovery(DbSession dbSession, Collection<String> projectUuids, ProjectIndexer.Cause cause) { switch (cause) { case PERMISSION_CHANGE: // nothing to do, permissions are not used in type projectmeasures/projectmeasure return Collections.emptyList(); case MEASURE_CHANGE: case PROJECT_KEY_UPDATE: // project must be re-indexed because key is used in this index case PROJECT_CREATION: // provisioned projects are supported by WS api/components/search_projects case PROJECT_TAGS_UPDATE: case PROJECT_DELETION: List<EsQueueDto> items = projectUuids.stream() .map(projectUuid -> EsQueueDto.create(INDEX_TYPE_PROJECT_MEASURES.format(), projectUuid, null, projectUuid)) .collect(MoreCollectors.toArrayList(projectUuids.size())); return dbClient.esQueueDao().insert(dbSession, items); default: // defensive case throw new IllegalStateException("Unsupported cause: " + cause); } }
public IndexingResult commitAndIndex(DbSession dbSession, Collection<String> projectUuids) { List<EsQueueDto> items = projectUuids.stream() .map(projectUuid -> EsQueueDto.create(INDEX_TYPE_PROJECT_MEASURES.format(), projectUuid, null, projectUuid)) .collect(MoreCollectors.toArrayList(projectUuids.size())); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); return index(dbSession, items); }
public void delete(DbSession dbSession, Collection<String> viewUuids) { List<EsQueueDto> items = viewUuids.stream() .map(l -> EsQueueDto.create(INDEX_TYPE_VIEW.format(), l)) .collect(MoreCollectors.toArrayList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); index(dbSession, items); }
private EsQueueDto insertInQueue(IndexType indexType, String id) { EsQueueDto item = EsQueueDto.create(indexType.format(), id); db.getDbClient().esQueueDao().insert(db.getSession(), singletonList(item)); return item; }
private EsQueueDto insertInQueue(IndexType indexType, String id) { EsQueueDto item = EsQueueDto.create(indexType.format(), id); db.getDbClient().esQueueDao().insert(db.getSession(), singletonList(item)); return item; }
@Test public void index_fails_and_deletes_doc_if_docIdType_is_unsupported() { EsQueueDto item = EsQueueDto.create(INDEX_TYPE_ACTIVE_RULE.format(), "the_id", "unsupported", "the_routing"); db.getDbClient().esQueueDao().insert(db.getSession(), item); underTest.index(db.getSession(), asList(item)); assertThatEsQueueTableIsEmpty(); assertThat(es.countDocuments(INDEX_TYPE_ACTIVE_RULE)).isEqualTo(0); }
private EsQueueDto insertItem(IndexType indexType, String docUuid) { EsQueueDto item = EsQueueDto.create(indexType.format(), docUuid); db.getDbClient().esQueueDao().insert(db.getSession(), item); db.commit(); return item; }
@Test public void recovery_does_not_fail_if_unsupported_docIdType() { EsQueueDto item = EsQueueDto.create(INDEX_TYPE_ISSUE.format(), "I1", "unknown", "P1"); db.getDbClient().esQueueDao().insert(db.getSession(), item); db.commit(); recover(); assertThat(logTester.logs(LoggerLevel.ERROR)) .filteredOn(l -> l.contains("Unsupported es_queue.doc_id_type for issues. Manual fix is required: ")) .hasSize(1); assertThatEsQueueTableHasSize(1); }
@Test public void commitAndIndex_keeps_elements_to_recover_in_ES_QUEUE_on_errors() { ActiveRuleDto ar = db.qualityProfiles().activateRule(profile1, rule1); es.lockWrites(INDEX_TYPE_ACTIVE_RULE); commitAndIndex(rule1, ar); EsQueueDto expectedItem = EsQueueDto.create(INDEX_TYPE_ACTIVE_RULE.format(), "" + ar.getId(), "activeRuleId", valueOf(ar.getRuleId())); assertThatEsQueueContainsExactly(expectedItem); es.unlockWrites(INDEX_TYPE_ACTIVE_RULE); }
private static EsQueueDto createQueueDto(String docId, String docIdType, String projectUuid) { return EsQueueDto.create(INDEX_TYPE_ISSUE.format(), docId, docIdType, projectUuid); }
private Collection<EsQueueDto> insertIntoEsQueue(DbSession dbSession, Collection<String> projectUuids) { List<EsQueueDto> items = indexTypes.stream() .flatMap(indexType -> projectUuids.stream().map(projectUuid -> EsQueueDto.create(indexType.format(), projectUuid, null, projectUuid))) .collect(toArrayList()); dbClient.esQueueDao().insert(dbSession, items); return items; }
public void commitAndIndex(DbSession dbSession, Collection<UserDto> users) { List<String> uuids = users.stream().map(UserDto::getUuid).collect(toList()); List<EsQueueDto> items = uuids.stream() .map(uuid -> EsQueueDto.create(INDEX_TYPE_USER.format(), uuid)) .collect(MoreCollectors.toArrayList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); postCommit(dbSession, users.stream().map(UserDto::getLogin).collect(toList()), items); }
public IndexingResult commitAndIndex(DbSession dbSession, Collection<String> projectUuids) { List<EsQueueDto> items = projectUuids.stream() .map(projectUuid -> EsQueueDto.create(INDEX_TYPE_PROJECT_MEASURES.format(), projectUuid, null, projectUuid)) .collect(MoreCollectors.toArrayList(projectUuids.size())); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); return index(dbSession, items); }
public void delete(DbSession dbSession, Collection<String> viewUuids) { List<EsQueueDto> items = viewUuids.stream() .map(l -> EsQueueDto.create(INDEX_TYPE_VIEW.format(), l)) .collect(MoreCollectors.toArrayList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); index(dbSession, items); }