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.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
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.settings.RedactionServiceSettings;
|
||||
import feign.FeignException;
|
||||
@ -59,7 +57,6 @@ public class DroolsExecutionService {
|
||||
|
||||
RedactionServiceSettings settings;
|
||||
|
||||
|
||||
@Timed("redactmanager_executeRules")
|
||||
public List<FileAttribute> executeRules(KieContainer kieContainer,
|
||||
Document document,
|
||||
@ -110,23 +107,21 @@ public class DroolsExecutionService {
|
||||
|
||||
kieSession.getAgenda().getAgendaGroup("LOCAL_DICTIONARY_ADDS").setFocus();
|
||||
|
||||
CompletableFuture<Void> completableFuture = CompletableFuture.supplyAsync(() -> {
|
||||
kieSession.fireAllRules();
|
||||
return null;
|
||||
});
|
||||
|
||||
SimpleTimeLimiter limiter = SimpleTimeLimiter.create(Executors.newSingleThreadExecutor());
|
||||
|
||||
try {
|
||||
completableFuture.orTimeout(settings.getDroolsExecutionTimeoutSecs(), TimeUnit.SECONDS).get();
|
||||
} catch (ExecutionException e) {
|
||||
limiter.runWithTimeout(kieSession::fireAllRules, settings.getDroolsExecutionTimeoutSecs(), TimeUnit.SECONDS);
|
||||
|
||||
} catch (TimeoutException e) {
|
||||
kieSession.dispose();
|
||||
if(e.getCause() instanceof TimeoutException){
|
||||
throw new DroolsTimeoutException(e, false);
|
||||
}
|
||||
throw new RuntimeException(e);
|
||||
throw new DroolsTimeoutException(e, false);
|
||||
} catch (InterruptedException e) {
|
||||
kieSession.dispose();
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
|
||||
List<FileAttribute> resultingFileAttributes = getFileAttributes(kieSession);
|
||||
kieSession.dispose();
|
||||
return resultingFileAttributes;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user