diff --git a/search-service-v1/search-service-server-v1/pom.xml b/search-service-v1/search-service-server-v1/pom.xml
index 849eec0..0894b1e 100644
--- a/search-service-v1/search-service-server-v1/pom.xml
+++ b/search-service-v1/search-service-server-v1/pom.xml
@@ -12,7 +12,7 @@
search-service-server-v1
- 2.0.12
+ 2.59.0
diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/IndexingMessageReceiver.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/IndexingMessageReceiver.java
index ca40d81..6256678 100644
--- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/IndexingMessageReceiver.java
+++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/IndexingMessageReceiver.java
@@ -4,7 +4,9 @@ import static com.iqser.red.service.search.v1.server.queue.MessagingConfiguratio
import static com.iqser.red.service.search.v1.server.queue.MessagingConfiguration.DELETE_FROM_INDEX_QUEUE;
import static com.iqser.red.service.search.v1.server.queue.MessagingConfiguration.INDEXING_DQL;
import static com.iqser.red.service.search.v1.server.queue.MessagingConfiguration.INDEXING_QUEUE;
+import static com.iqser.red.service.search.v1.server.queue.MessagingConfiguration.X_ERROR_INFO_HEADER;
+import java.nio.charset.StandardCharsets;
import java.util.List;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
@@ -17,6 +19,7 @@ import org.springframework.stereotype.Service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
+import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileErrorInfo;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.search.v1.model.IndexMessage;
import com.iqser.red.service.search.v1.model.IndexMessageType;
@@ -70,7 +73,13 @@ public class IndexingMessageReceiver {
indexRequest.getFileId()));
}
- receiveIndexingRequest(indexRequest);
+ try {
+ receiveIndexingRequest(indexRequest);
+ } catch (Exception e) {
+ log.warn("An exception occurred in processing the indexing request stage: ", e);
+ message.getMessageProperties().getHeaders().put(X_ERROR_INFO_HEADER, e.getMessage());
+ throw e;
+ }
}
@@ -102,11 +111,7 @@ public class IndexingMessageReceiver {
case DROP:
indexDeleteService.recreateIndex();
addAllDocumentsToIndexQueue();
- try {
- indexInformationService.updateIndexInformation();
- } catch (Exception e) {
- log.error("Could not update index information", e);
- }
+ indexInformationService.updateIndexInformation();
break;
default:
@@ -118,33 +123,46 @@ public class IndexingMessageReceiver {
@RabbitHandler
@RabbitListener(queues = INDEXING_DQL)
- public void receiveIndexingRequestDQL(String in) throws JsonProcessingException {
+ public void receiveIndexingRequestDQL(Message in) throws JsonProcessingException {
+
+ var indexRequest = objectMapper.readValue(new String(in.getBody(), StandardCharsets.UTF_8), IndexMessage.class);
+ String errorLog = "Failed to process indexing request:";
+ log.info(errorLog + ": {}", indexRequest);
+ String errorMessage = errorLog + in.getMessageProperties().getHeader(X_ERROR_INFO_HEADER);
+ fileStatusProcessingUpdateClient.indexingFailed(indexRequest.getDossierId(), indexRequest.getFileId(), new FileErrorInfo(errorMessage, INDEXING_DQL, "search-service"));
- var indexRequest = objectMapper.readValue(in, IndexMessage.class);
- fileStatusProcessingUpdateClient.indexingFailed(indexRequest.getDossierId(), indexRequest.getFileId());
- log.info("Failed to process indexing request: {}", indexRequest);
}
@RabbitHandler
@RabbitListener(queues = DELETE_FROM_INDEX_QUEUE)
- public void receiveDeleteDocumentRequest(String in) throws JsonProcessingException {
+ public void receiveDeleteDocumentRequest(Message in) throws JsonProcessingException {
- var indexRequest = objectMapper.readValue(in, IndexMessage.class);
+ var indexRequest = objectMapper.readValue(new String(in.getBody(), StandardCharsets.UTF_8), IndexMessage.class);
log.info("Processing delete document request: {}", indexRequest);
- documentDeleteService.deleteDocument(indexRequest.getFileId());
- log.info("Successfully deleted document with dossierId {} and fileId {}", indexRequest.getDossierId(), indexRequest.getFileId());
+ try {
+ documentDeleteService.deleteDocument(indexRequest.getFileId());
+ log.info("Successfully deleted document with dossierId {} and fileId {}", indexRequest.getDossierId(), indexRequest.getFileId());
+ } catch (Exception e) {
+ log.warn("An exception occurred in processing delete document stage: ", e.getMessage());
+ in.getMessageProperties().getHeaders().put(X_ERROR_INFO_HEADER, e.getMessage());
+ throw e;
+ }
}
@RabbitHandler
@RabbitListener(queues = DELETE_FROM_INDEX_DLQ)
- public void receiveDeleteDocumentRequestDLQ(String in) throws JsonProcessingException {
+ public void receiveDeleteDocumentRequestDLQ(Message in) throws JsonProcessingException {
+
+ var indexRequest = objectMapper.readValue(new String(in.getBody(), StandardCharsets.UTF_8), IndexMessage.class);
+ String errorLog = "Failed to process delete from index request ";
+ log.info(errorLog + ": {}", indexRequest);
+ String errorMessage = errorLog + in.getMessageProperties().getHeader(X_ERROR_INFO_HEADER);
+
+ fileStatusProcessingUpdateClient.indexingFailed(indexRequest.getDossierId(), indexRequest.getFileId(), new FileErrorInfo(errorMessage, INDEXING_DQL, "search-service"));
- var indexRequest = objectMapper.readValue(in, IndexMessage.class);
- fileStatusProcessingUpdateClient.indexingFailed(indexRequest.getDossierId(), indexRequest.getFileId());
- log.info("Failed to process delete from index request: {}", indexRequest);
}
diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/MessagingConfiguration.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/MessagingConfiguration.java
index 201571a..0d9d8d7 100644
--- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/MessagingConfiguration.java
+++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/queue/MessagingConfiguration.java
@@ -17,6 +17,8 @@ public class MessagingConfiguration {
public static final String DELETE_FROM_INDEX_QUEUE = "deleteFromIndexQueue";
public static final String DELETE_FROM_INDEX_DLQ = "deleteFromIndexDLQ";
+ public static final String X_ERROR_INFO_HEADER = "x-error-message";
+
@Bean
public Queue indexingQueue() {