From cf08b872ef67ec6e5223de26e041cc252a85f0b3 Mon Sep 17 00:00:00 2001 From: Ken Wenzel Date: Mon, 2 Sep 2024 14:39:40 +0200 Subject: [PATCH] Do not use async evaluation for last binding. --- .../core/rdf4j/kvin/KvinFederatedService.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bundles/io.github.linkedfactory.core/src/main/java/io/github/linkedfactory/core/rdf4j/kvin/KvinFederatedService.java b/bundles/io.github.linkedfactory.core/src/main/java/io/github/linkedfactory/core/rdf4j/kvin/KvinFederatedService.java index 9d7e1616..0fa31b98 100644 --- a/bundles/io.github.linkedfactory.core/src/main/java/io/github/linkedfactory/core/rdf4j/kvin/KvinFederatedService.java +++ b/bundles/io.github.linkedfactory.core/src/main/java/io/github/linkedfactory/core/rdf4j/kvin/KvinFederatedService.java @@ -110,13 +110,21 @@ public CloseableIteration evaluate( while (bindings.hasNext() && bindingSetList.size() < InnerJoinIterator.BATCH_SIZE) { bindingSetList.add(bindings.next()); } - resultIters.add(new AsyncIterator<>(() -> ((BatchQueryEvaluationStep) precompiled) - .evaluate(bindingSetList), executorService)); + if (! bindings.hasNext()) { + resultIters.add(((BatchQueryEvaluationStep) precompiled).evaluate(bindingSetList)); + } else { + resultIters.add(new AsyncIterator<>(() -> ((BatchQueryEvaluationStep) precompiled) + .evaluate(bindingSetList), executorService)); + } } } else { while (bindings.hasNext()) { BindingSet bs = bindings.next(); - resultIters.add(new AsyncIterator<>(() -> precompiled.evaluate(bs), executorService)); + if (! bindings.hasNext()) { + resultIters.add(precompiled.evaluate(bs)); + } else { + resultIters.add(new AsyncIterator<>(() -> precompiled.evaluate(bs), executorService)); + } } }