From 6095919e17933bbe299a161099cd0fb84407f607 Mon Sep 17 00:00:00 2001 From: Stig Norland Date: Mon, 14 Oct 2024 13:39:37 +0200 Subject: [PATCH] Moved SHARD_ID to DEFAULT_SHARD_ID (#597) --- ...DeleteImportCandidateFromIndexHandler.java | 2 +- .../model/DeleteImportCandidateEvent.java | 37 +------------- .../java/no/unit/nva/constants/Defaults.java | 1 + .../nva/indexingclient/IndexingClient.java | 50 ++++++++++--------- .../nva/indexingclient/models/Constants.java | 16 ------ .../indexingclient/models/IndexDocument.java | 4 +- 6 files changed, 31 insertions(+), 79 deletions(-) delete mode 100644 search-commons/src/main/java/no/unit/nva/indexingclient/models/Constants.java diff --git a/indexing-handlers/src/main/java/no/unit/nva/indexing/handlers/DeleteImportCandidateFromIndexHandler.java b/indexing-handlers/src/main/java/no/unit/nva/indexing/handlers/DeleteImportCandidateFromIndexHandler.java index fc07fc126..55204563c 100644 --- a/indexing-handlers/src/main/java/no/unit/nva/indexing/handlers/DeleteImportCandidateFromIndexHandler.java +++ b/indexing-handlers/src/main/java/no/unit/nva/indexing/handlers/DeleteImportCandidateFromIndexHandler.java @@ -39,7 +39,7 @@ protected Void processInputPayload( AwsEventBridgeEvent> event, Context context) { try { - indexingClient.removeDocumentFromImportCandidateIndex(input.getIdentifier().toString()); + indexingClient.removeDocumentFromImportCandidateIndex(input.identifier().toString()); logger.info(REMOVED_FROM_INDEX_MESSAGE); } catch (Exception e) { logError(e); diff --git a/indexing-handlers/src/main/java/no/unit/nva/indexing/model/DeleteImportCandidateEvent.java b/indexing-handlers/src/main/java/no/unit/nva/indexing/model/DeleteImportCandidateEvent.java index 0263e4c29..2c77ff24b 100644 --- a/indexing-handlers/src/main/java/no/unit/nva/indexing/model/DeleteImportCandidateEvent.java +++ b/indexing-handlers/src/main/java/no/unit/nva/indexing/model/DeleteImportCandidateEvent.java @@ -6,19 +6,12 @@ import no.unit.nva.commons.json.JsonSerializable; import no.unit.nva.identifiers.SortableIdentifier; -import nva.commons.core.JacocoGenerated; - -import java.util.Objects; - -public class DeleteImportCandidateEvent implements JsonSerializable { +public record DeleteImportCandidateEvent(String topic, SortableIdentifier identifier) implements JsonSerializable { public static final String EVENT_TOPIC = "ImportCandidates.ExpandedEntry.Deleted"; public static final String TOPIC = "topic"; public static final String IDENTIFIER = "identifier"; - private final String topic; - private final SortableIdentifier identifier; - @JsonCreator public DeleteImportCandidateEvent( @JsonProperty(TOPIC) String topic, @@ -26,32 +19,4 @@ public DeleteImportCandidateEvent( this.topic = topic; this.identifier = identifier; } - - @JacocoGenerated - public String getTopic() { - return topic; - } - - public SortableIdentifier getIdentifier() { - return identifier; - } - - @JacocoGenerated - @Override - public int hashCode() { - return Objects.hash(getTopic(), getIdentifier()); - } - - @Override - @JacocoGenerated - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DeleteImportCandidateEvent that = (DeleteImportCandidateEvent) o; - return topic.equals(that.topic) && identifier.equals(that.identifier); - } } diff --git a/search-commons/src/main/java/no/unit/nva/constants/Defaults.java b/search-commons/src/main/java/no/unit/nva/constants/Defaults.java index 4c57a5de3..7e0f36685 100644 --- a/search-commons/src/main/java/no/unit/nva/constants/Defaults.java +++ b/search-commons/src/main/java/no/unit/nva/constants/Defaults.java @@ -35,6 +35,7 @@ public final class Defaults { List.of(MediaType.JSON_UTF_8, MediaTypes.APPLICATION_JSON_LD, MediaType.CSV_UTF_8); public static final int ZERO_RESULTS_AGGREGATION_ONLY = 0; + public static final String DEFAULT_SHARD_ID = "0"; @JacocoGenerated public Defaults() {} diff --git a/search-commons/src/main/java/no/unit/nva/indexingclient/IndexingClient.java b/search-commons/src/main/java/no/unit/nva/indexingclient/IndexingClient.java index 91e31fd93..e651e6f8c 100644 --- a/search-commons/src/main/java/no/unit/nva/indexingclient/IndexingClient.java +++ b/search-commons/src/main/java/no/unit/nva/indexingclient/IndexingClient.java @@ -1,8 +1,8 @@ package no.unit.nva.indexingclient; +import static no.unit.nva.constants.Defaults.DEFAULT_SHARD_ID; import static no.unit.nva.constants.Words.IMPORT_CANDIDATES_INDEX; import static no.unit.nva.constants.Words.RESOURCES; -import static no.unit.nva.indexingclient.models.Constants.SHARD_ID; import static no.unit.nva.indexingclient.models.RestHighLevelClientWrapper.defaultRestHighLevelClientWrapper; import static nva.commons.core.attempt.Try.attempt; @@ -27,6 +27,7 @@ import org.opensearch.action.bulk.BulkRequest; import org.opensearch.action.bulk.BulkResponse; import org.opensearch.action.delete.DeleteRequest; +import org.opensearch.action.delete.DeleteResponse; import org.opensearch.action.index.IndexRequest; import org.opensearch.action.support.ActiveShardCount; import org.opensearch.action.support.WriteRequest.RefreshPolicy; @@ -50,8 +51,7 @@ public class IndexingClient extends AuthenticatedOpenSearchClientWrapper { public static final int BULK_SIZE = 100; private static final Logger logger = LoggerFactory.getLogger(IndexingClient.class); - // public static final objectMapperWithEmpty objectMapperWithEmpty = - // JsonUtils.dtoObjectMapper; + private static final String INITIAL_LOG_MESSAGE = "Adding document [{}] to -> {}"; private static final String DOCUMENT_WITH_ID_WAS_NOT_FOUND_IN_SEARCH_INFRASTRUCTURE = "Document with id={} was not found in search infrastructure"; @@ -97,21 +97,17 @@ public Void addDocumentToIndex(IndexDocument indexDocument) throws IOException { public void removeDocumentFromResourcesIndex(String identifier) throws IOException { var deleteRequest = deleteDocumentRequest(RESOURCES, identifier); var deleteResponse = openSearchClient.delete(deleteRequest, getRequestOptions()); - if (deleteResponse.getResult() == DocWriteResponse.Result.NOT_FOUND) { - logger.warn(DOCUMENT_WITH_ID_WAS_NOT_FOUND_IN_SEARCH_INFRASTRUCTURE, identifier); - } + loggWarningIfNotFound(identifier, deleteResponse); } private static DeleteRequest deleteDocumentRequest(String index, String identifier) { - return new DeleteRequest(index, identifier).routing(SHARD_ID); + return new DeleteRequest(index, identifier).routing(DEFAULT_SHARD_ID); } public void removeDocumentFromImportCandidateIndex(String identifier) throws IOException { var deleteRequest = deleteDocumentRequest(IMPORT_CANDIDATES_INDEX, identifier); var deleteResponse = openSearchClient.delete(deleteRequest, getRequestOptions()); - if (deleteResponse.getResult() == DocWriteResponse.Result.NOT_FOUND) { - logger.warn(DOCUMENT_WITH_ID_WAS_NOT_FOUND_IN_SEARCH_INFRASTRUCTURE, identifier); - } + loggWarningIfNotFound(identifier, deleteResponse); } public Void createIndex(String indexName) throws IOException { @@ -141,20 +137,6 @@ public Stream batchInsert(Stream contents) { return batches.map(attempt(this::insertBatch)).map(Try::orElseThrow); } - public Void deleteIndex(String indexName) throws IOException { - openSearchClient.indices().delete(new DeleteIndexRequest(indexName), getRequestOptions()); - return null; - } - - public JsonNode getMapping(String indexName) { - return attempt(() -> getMappingMetadata(indexName)) - .map(MappingMetadata::source) - .map(CompressedXContent::uncompressed) - .map(BytesReference::utf8ToString) - .map(JsonUtils.dtoObjectMapper::readTree) - .orElseThrow(); - } - private Stream> splitStreamToBatches(Stream indexDocuments) { UnmodifiableIterator> bulks = Iterators.partition(indexDocuments.iterator(), BULK_SIZE); @@ -173,6 +155,26 @@ private BulkResponse insertBatch(List bulk) throws IOException { return openSearchClient.bulk(request, getRequestOptions()); } + public Void deleteIndex(String indexName) throws IOException { + openSearchClient.indices().delete(new DeleteIndexRequest(indexName), getRequestOptions()); + return null; + } + + public JsonNode getMapping(String indexName) { + return attempt(() -> getMappingMetadata(indexName)) + .map(MappingMetadata::source) + .map(CompressedXContent::uncompressed) + .map(BytesReference::utf8ToString) + .map(JsonUtils.dtoObjectMapper::readTree) + .orElseThrow(); + } + + private void loggWarningIfNotFound(String identifier, DeleteResponse deleteResponse) { + if (deleteResponse.getResult() == DocWriteResponse.Result.NOT_FOUND) { + logger.warn(DOCUMENT_WITH_ID_WAS_NOT_FOUND_IN_SEARCH_INFRASTRUCTURE, identifier); + } + } + private MappingMetadata getMappingMetadata(String indexName) throws IOException { var request = new GetMappingsRequest().indices(indexName); return openSearchClient diff --git a/search-commons/src/main/java/no/unit/nva/indexingclient/models/Constants.java b/search-commons/src/main/java/no/unit/nva/indexingclient/models/Constants.java deleted file mode 100644 index 07eb3b2b1..000000000 --- a/search-commons/src/main/java/no/unit/nva/indexingclient/models/Constants.java +++ /dev/null @@ -1,16 +0,0 @@ -package no.unit.nva.indexingclient.models; - -import nva.commons.core.JacocoGenerated; - -/** - * Constants for the . - * - * @author Stig Norland - */ -public final class Constants { - - public static final String SHARD_ID = "0"; - - @JacocoGenerated - private Constants() {} -} diff --git a/search-commons/src/main/java/no/unit/nva/indexingclient/models/IndexDocument.java b/search-commons/src/main/java/no/unit/nva/indexingclient/models/IndexDocument.java index 4d0d1fb6c..a05d7eae4 100644 --- a/search-commons/src/main/java/no/unit/nva/indexingclient/models/IndexDocument.java +++ b/search-commons/src/main/java/no/unit/nva/indexingclient/models/IndexDocument.java @@ -1,5 +1,6 @@ package no.unit.nva.indexingclient.models; +import static no.unit.nva.constants.Defaults.DEFAULT_SHARD_ID; import static no.unit.nva.constants.Defaults.objectMapperWithEmpty; import static no.unit.nva.constants.ErrorMessages.MISSING_IDENTIFIER_IN_RESOURCE; import static no.unit.nva.constants.ErrorMessages.MISSING_INDEX_NAME_IN_RESOURCE; @@ -8,7 +9,6 @@ import static no.unit.nva.constants.Words.IMPORT_CANDIDATES_INDEX; import static no.unit.nva.constants.Words.RESOURCES; import static no.unit.nva.constants.Words.TICKETS; -import static no.unit.nva.indexingclient.models.Constants.SHARD_ID; import static nva.commons.core.attempt.Try.attempt; @@ -80,7 +80,7 @@ public String getDocumentIdentifier() { public IndexRequest toIndexRequest() { return new IndexRequest(getIndexName()) .source(serializeResource(), XContentType.JSON) - .routing(SHARD_ID) + .routing(DEFAULT_SHARD_ID) .id(getDocumentIdentifier()); }