diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java index e7aca7cb..84d41ffc 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java @@ -8,6 +8,7 @@ import static java.lang.String.format; import java.io.IOException; import java.time.OffsetDateTime; import java.time.temporal.ChronoUnit; +import java.util.concurrent.CompletionException; import org.springframework.amqp.AmqpRejectAndDontRequeueException; import org.springframework.amqp.core.Message; @@ -171,12 +172,10 @@ public class RedactionMessageReceiver { ErrorCode errorCode = null; - if(e instanceof DroolsTimeoutException dre){ - if (!dre.isReported()){ - errorCode = ErrorCode.RULES_EXECUTION_TIMEOUT; - } else { - errorCode = ErrorCode.LOCKED_RULES; - } + if(e instanceof CompletionException ce){ + errorCode = computeErrorCodeFromDroolsTimeoutException(ce.getCause()); + } else { + errorCode = computeErrorCodeFromDroolsTimeoutException(e); } fileStatusProcessingUpdateClient.analysisFailed(analyzeRequest.getDossierId(), @@ -187,6 +186,18 @@ public class RedactionMessageReceiver { errorCode)); } + private ErrorCode computeErrorCodeFromDroolsTimeoutException(Throwable e){ + ErrorCode errorCode = null; + if(e instanceof DroolsTimeoutException dre){ + if (!dre.isReported()){ + errorCode = ErrorCode.RULES_EXECUTION_TIMEOUT; + } else { + errorCode = ErrorCode.LOCKED_RULES; + } + } + return errorCode; + } + @RabbitHandler @RabbitListener(queues = REDACTION_DLQ)