diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/drools/KieContainerCreationService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/drools/KieContainerCreationService.java index 2641681c..8cf28549 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/drools/KieContainerCreationService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/drools/KieContainerCreationService.java @@ -10,13 +10,16 @@ import org.kie.api.builder.KieBuilder; import org.kie.api.builder.KieFileSystem; import org.kie.api.builder.ReleaseId; import org.kie.api.runtime.KieContainer; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.redaction.v1.server.client.RulesClient; import com.iqser.red.service.redaction.v1.server.model.KieWrapper; +import com.iqser.red.service.redaction.v1.server.utils.exception.DroolsTimeoutException; import com.knecon.fforesight.tenantcommons.TenantContext; +import feign.FeignException; import lombok.RequiredArgsConstructor; @Service @@ -28,14 +31,21 @@ public class KieContainerCreationService { public KieWrapper getLatestKieContainer(String dossierTemplateId, RuleFileType ruleFileType) { - long version = rulesClient.getVersion(dossierTemplateId, ruleFileType); - - if (version == -1) { - return new KieWrapper(null, version); + try { + long version = rulesClient.getVersion(dossierTemplateId, ruleFileType); + if (version == -1) { + return KieWrapper.empty(); + } + return new KieWrapper(getKieContainer(dossierTemplateId, version, ruleFileType), version); + } catch (FeignException fe) { + if (fe.status() == HttpStatus.UNPROCESSABLE_ENTITY.value()) { + throw new DroolsTimeoutException(fe.getCause(), true, ruleFileType); + } + if (fe.status() == HttpStatus.NOT_FOUND.value()) { + return KieWrapper.empty(); + } + throw new RuntimeException(fe); } - - return new KieWrapper(getKieContainer(dossierTemplateId, version, ruleFileType), version); - }