diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadDLQMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadDLQMessageReceiver.java index 1dfa8e6ac..320fb68f7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadDLQMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadDLQMessageReceiver.java @@ -46,18 +46,27 @@ public class DownloadDLQMessageReceiver { String errorCause = failedMessage.getMessageProperties().getHeader(X_ERROR_INFO_HEADER); errorCause = errorCause.substring(0,MAX_ERROR_CAUSE_LENGTH-1); if (errorCause == null) { - errorCause = "Error occured during download job!"; + errorCause = "Unknown error occured in download queue!"; } - log.warn("Handling download job in DLQ userId: {} storageId: {} - setting status to error!", downloadJob.getUserId(), downloadJob.getStorageId()); + log.warn("Handling download job in DLQ userId: {} storageId: {} - setting status to error! cause: {}", downloadJob.getUserId(), downloadJob.getStorageId(), errorCause); setDownloadFailed(downloadJob.getUserId(), downloadJob.getStorageId(), errorCause); } + @SneakyThrows @RabbitListener(queues = MessagingConfiguration.REPORT_DLQ) - public void handleReportDlqMessage(ReportRequestMessage reportRequestMessage) { + public void handleReportDlqMessage(Message failedMessage) { + var reportRequestMessage = objectMapper.readValue(failedMessage.getBody(), ReportRequestMessage.class); + String errorCause = failedMessage.getMessageProperties().getHeader(X_ERROR_INFO_HEADER); + if (errorCause == null) { + errorCause = "Unknown error occured in report redaction queue!"; + } + else if(errorCause.length() > MAX_ERROR_CAUSE_LENGTH) { + errorCause = errorCause.substring(0,MAX_ERROR_CAUSE_LENGTH-1); + } log.warn("Handling report request in DLQ userId: {} storageId: {} - setting status to error!", reportRequestMessage.getUserId(), reportRequestMessage.getDownloadId()); - setDownloadFailed(reportRequestMessage.getUserId(), reportRequestMessage.getDownloadId()); + setDownloadFailed(reportRequestMessage.getUserId(), reportRequestMessage.getDownloadId(), errorCause); } @@ -71,11 +80,9 @@ public class DownloadDLQMessageReceiver { private void setDownloadFailed(String userId, String downloadId) { - String errorCause = "unknown error cause"; - retryTemplate.execute(retryContext -> { log.warn("Retrying {} time to set FAILED status for downloadJob userId: {} storageId: {}", retryContext.getRetryCount(), userId, downloadId); - downloadStatusPersistenceService.updateStatus(downloadId, DownloadStatusValue.FAILED, errorCause); + downloadStatusPersistenceService.updateStatus(downloadId, DownloadStatusValue.FAILED, "error occured in unknown queue"); return null; }); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java index 965f606b5..7fb06ffd2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java @@ -1,11 +1,15 @@ package com.iqser.red.service.persistence.management.v1.processor.service.download; +import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.X_ERROR_INFO_HEADER; + import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionMessage; import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatusValue; +import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage; + import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; @@ -32,6 +36,7 @@ public class RedactionDlqMessageReceiver { RetryTemplate retryTemplate; RabbitTemplate rabbitTemplate; + private final static int MAX_ERROR_CAUSE_LENGTH = 1024; @RabbitHandler @RabbitListener(queues = MessagingConfiguration.PDFTRON_DLQ) @@ -40,6 +45,14 @@ public class RedactionDlqMessageReceiver { // Download packages will always be build on the pod that runs the scheduler, as we plan to replace the entire logic by downloading directory direct from storage, we leave it like that for now. RedactionMessage redactionMessage = objectMapper.readValue(message.getBody(), RedactionMessage.class); + String errorCause = message.getMessageProperties().getHeader(X_ERROR_INFO_HEADER); + if (errorCause == null) { + errorCause = "Unkown error occured in pdftron service!"; + } + else if(errorCause.length() > MAX_ERROR_CAUSE_LENGTH) { + errorCause = errorCause.substring(0,MAX_ERROR_CAUSE_LENGTH-1); + } + var fileEntryOptional = downloadPreparationService.getRedactionFileStatusEntry(redactionMessage.getDownloadId(), redactionMessage.getFileId()); @@ -47,7 +60,7 @@ public class RedactionDlqMessageReceiver { var entry = fileEntryOptional.get(); int numErrors = entry.getProcessingErrorCounter() + 1; if (numErrors >= settings.getMaxRedactionFileErrorRetries()) { - setDownloadFailed(redactionMessage.getDownloadId()); + setDownloadFailed(redactionMessage.getDownloadId(), errorCause); downloadPreparationService.clearRedactionStatusEntries(redactionMessage.getDownloadId()); } else { downloadPreparationService.increaseProcessingErrorCounter(redactionMessage, numErrors); @@ -60,11 +73,11 @@ public class RedactionDlqMessageReceiver { } - public void setDownloadFailed(String downloadId) { + public void setDownloadFailed(String downloadId,String errorCause) { retryTemplate.execute(retryContext -> { log.warn("Retrying {} time to set FAILED status for downloadJob with storageId: {}", retryContext.getRetryCount(), downloadId); - downloadStatusPersistenceService.updateStatus(downloadId, DownloadStatusValue.FAILED); + downloadStatusPersistenceService.updateStatus(downloadId, DownloadStatusValue.FAILED, errorCause); return null; }); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusRepository.java index 2682a725f..1a0af6eec 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusRepository.java @@ -22,6 +22,7 @@ public interface DownloadStatusRepository extends JpaRepository