RED-6805: As Operation I want to see why downloads are in an ERROR state
added errorCause to dlq message receiver added column with errorcause to downloadstatus table
This commit is contained in:
parent
0d9f5276a5
commit
bc348215a6
@ -1,9 +1,13 @@
|
||||
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 org.springframework.amqp.core.Message;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.retry.support.RetryTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService;
|
||||
@ -12,6 +16,7 @@ import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@ -21,6 +26,7 @@ public class DownloadDLQMessageReceiver {
|
||||
|
||||
private final DownloadStatusPersistenceService downloadStatusPersistenceService;
|
||||
private final RetryTemplate retryTemplate;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
|
||||
@RabbitListener(queues = MessagingConfiguration.DOWNLOAD_COMPRESSION_DLQ)
|
||||
@ -31,11 +37,16 @@ public class DownloadDLQMessageReceiver {
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
@RabbitListener(queues = MessagingConfiguration.DOWNLOAD_DLQ)
|
||||
public void handleDlqMessage(DownloadJob downloadJob) {
|
||||
|
||||
public void handleDlqMessage(Message failedMessage) {
|
||||
var downloadJob = objectMapper.readValue(failedMessage.getBody(), DownloadJob.class);
|
||||
String errorCause = failedMessage.getMessageProperties().getHeader(X_ERROR_INFO_HEADER);
|
||||
if (errorCause == null) {
|
||||
errorCause = "Error occured during download job!";
|
||||
}
|
||||
log.warn("Handling download job in DLQ userId: {} storageId: {} - setting status to error!", downloadJob.getUserId(), downloadJob.getStorageId());
|
||||
setDownloadFailed(downloadJob.getUserId(), downloadJob.getStorageId());
|
||||
setDownloadFailed(downloadJob.getUserId(), downloadJob.getStorageId(), errorCause);
|
||||
}
|
||||
|
||||
|
||||
@ -64,4 +75,13 @@ public class DownloadDLQMessageReceiver {
|
||||
});
|
||||
}
|
||||
|
||||
private void setDownloadFailed(String userId, String downloadId, String errorCause) {
|
||||
|
||||
retryTemplate.execute(retryContext -> {
|
||||
log.warn("Retrying {} time to set FAILED status for downloadJob userId: {} storageId: {}", retryContext.getRetryCount(), userId, downloadId);
|
||||
downloadStatusPersistenceService.updateStatus(downloadId, DownloadStatusValue.FAILED);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
databaseChangeLog:
|
||||
- changeSet:
|
||||
id: add-error-cause-to-download-status
|
||||
author: yannik
|
||||
changes:
|
||||
- addColumn:
|
||||
columns:
|
||||
- column:
|
||||
name: error_cause
|
||||
type: VARCHAR(1024)
|
||||
tableName: download_status
|
||||
Loading…
x
Reference in New Issue
Block a user