DM-410: Changed from drools timeout handling from CompletableFuture to...
This commit is contained in:
parent
f72d3972a3
commit
59a45ede62
@ -5,11 +5,9 @@ import java.io.InputStream;
|
|||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.*;
|
||||||
import java.util.concurrent.ExecutionException;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
|
||||||
|
|
||||||
|
import com.google.common.util.concurrent.SimpleTimeLimiter;
|
||||||
import com.iqser.red.service.redaction.v1.server.exception.DroolsTimeoutException;
|
import com.iqser.red.service.redaction.v1.server.exception.DroolsTimeoutException;
|
||||||
import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettings;
|
import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettings;
|
||||||
import feign.FeignException;
|
import feign.FeignException;
|
||||||
@ -59,7 +57,6 @@ public class DroolsExecutionService {
|
|||||||
|
|
||||||
RedactionServiceSettings settings;
|
RedactionServiceSettings settings;
|
||||||
|
|
||||||
|
|
||||||
@Timed("redactmanager_executeRules")
|
@Timed("redactmanager_executeRules")
|
||||||
public List<FileAttribute> executeRules(KieContainer kieContainer,
|
public List<FileAttribute> executeRules(KieContainer kieContainer,
|
||||||
Document document,
|
Document document,
|
||||||
@ -110,23 +107,21 @@ public class DroolsExecutionService {
|
|||||||
|
|
||||||
kieSession.getAgenda().getAgendaGroup("LOCAL_DICTIONARY_ADDS").setFocus();
|
kieSession.getAgenda().getAgendaGroup("LOCAL_DICTIONARY_ADDS").setFocus();
|
||||||
|
|
||||||
CompletableFuture<Void> completableFuture = CompletableFuture.supplyAsync(() -> {
|
|
||||||
kieSession.fireAllRules();
|
SimpleTimeLimiter limiter = SimpleTimeLimiter.create(Executors.newSingleThreadExecutor());
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
completableFuture.orTimeout(settings.getDroolsExecutionTimeoutSecs(), TimeUnit.SECONDS).get();
|
limiter.runWithTimeout(kieSession::fireAllRules, settings.getDroolsExecutionTimeoutSecs(), TimeUnit.SECONDS);
|
||||||
} catch (ExecutionException e) {
|
|
||||||
|
} catch (TimeoutException e) {
|
||||||
kieSession.dispose();
|
kieSession.dispose();
|
||||||
if(e.getCause() instanceof TimeoutException){
|
|
||||||
throw new DroolsTimeoutException(e, false);
|
throw new DroolsTimeoutException(e, false);
|
||||||
}
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
|
kieSession.dispose();
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<FileAttribute> resultingFileAttributes = getFileAttributes(kieSession);
|
List<FileAttribute> resultingFileAttributes = getFileAttributes(kieSession);
|
||||||
kieSession.dispose();
|
kieSession.dispose();
|
||||||
return resultingFileAttributes;
|
return resultingFileAttributes;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user