Class ControlledWorkerBoundJoin
java.lang.Object
org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<BindingSet>
org.eclipse.rdf4j.common.iteration.LookAheadIteration<BindingSet>
org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase<BindingSet>
org.eclipse.rdf4j.federated.evaluation.join.JoinExecutorBase<BindingSet>
org.eclipse.rdf4j.federated.evaluation.join.ControlledWorkerJoin
org.eclipse.rdf4j.federated.evaluation.join.ControlledWorkerBoundJoin
- All Implemented Interfaces:
AutoCloseable
,Runnable
,Iterator<BindingSet>
,CloseableIteration<BindingSet>
,ParallelExecutor<BindingSet>
Deprecated, for removal: This API element is subject to removal in a future version.
Execute the nested loop join in an asynchronous fashion, using grouped requests, i.e. group bindings into one SPARQL
request using a VALUES clause.
The number of concurrent threads is controlled by a
ControlledWorkerScheduler
which works according to the
FIFO principle and uses worker threads.
This join cursor blocks until all scheduled tasks are finished, however the result iteration can be accessed from
different threads to allow for pipelining.- Author:
- Andreas Schwarte
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
Deprecated, for removal: This API element is subject to removal in a future version.protected class
Deprecated, for removal: This API element is subject to removal in a future version.protected class
Deprecated, for removal: This API element is subject to removal in a future version.protected static interface
Deprecated, for removal: This API element is subject to removal in a future version. -
Field Summary
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.join.ControlledWorkerJoin
phaser, scheduler
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.join.JoinExecutorBase
bindings, joinVars, leftIter, rightArg
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
evaluationThread, executorId, finished, NEXT_EXECUTOR_ID, queryInfo, rightIter, rightQueue, strategy
-
Constructor Summary
ConstructorDescriptionControlledWorkerBoundJoin
(ControlledWorkerScheduler<BindingSet> scheduler, FederationEvalStrategy strategy, CloseableIteration<BindingSet> leftIter, TupleExpr rightArg, BindingSet bindings, QueryInfo queryInfo) Deprecated, for removal: This API element is subject to removal in a future version. -
Method Summary
Modifier and TypeMethodDescriptionprotected ControlledWorkerBoundJoin.TaskCreator
determineTaskCreator
(TupleExpr expr, BindingSet bs) Deprecated, for removal: This API element is subject to removal in a future version.protected int
getNextBindJoinSize
(int configuredBindJoinSize, int totalBindings) Deprecated, for removal: This API element is subject to removal in a future version.Return the size of the next bind join block.protected void
Deprecated, for removal: This API element is subject to removal in a future version.Implementations must implement this method to handle bindings.void
Deprecated, for removal: This API element is subject to removal in a future version.Called byAbstractCloseableIteration.close()
when it is called for the first time.protected void
setSubmitFirstResultImmediately
(boolean flag) Deprecated, for removal: This API element is subject to removal in a future version.Methods inherited from class org.eclipse.rdf4j.federated.evaluation.join.JoinExecutorBase
getExecutorType, getJoinVars, performExecution, setJoinVars
Methods inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
addResult, checkTimeout, done, getDisplayId, getId, getNextElement, getQueryInfo, isFinished, run, toss, toString
Methods inherited from class org.eclipse.rdf4j.common.iteration.LookAheadIteration
hasNext, next, remove
Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration
close, isClosed
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.rdf4j.common.iteration.CloseableIteration
stream
Methods inherited from interface java.util.Iterator
forEachRemaining
-
Constructor Details
-
ControlledWorkerBoundJoin
public ControlledWorkerBoundJoin(ControlledWorkerScheduler<BindingSet> scheduler, FederationEvalStrategy strategy, CloseableIteration<BindingSet> leftIter, TupleExpr rightArg, BindingSet bindings, QueryInfo queryInfo) throws QueryEvaluationException Deprecated, for removal: This API element is subject to removal in a future version.- Throws:
QueryEvaluationException
-
-
Method Details
-
setSubmitFirstResultImmediately
protected void setSubmitFirstResultImmediately(boolean flag) Deprecated, for removal: This API element is subject to removal in a future version. -
handleBindings
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:JoinExecutorBase
Implementations must implement this method to handle bindings. Use the following as a templatewhile (!closed invalid input: '&'invalid input: '&' leftIter.hasNext()) { // your code }
and add results to rightQueue. Note that addResult() is implemented synchronized and thus thread safe. In case you can guarantee sequential access, it is also possible to directly access rightQueue Note that the implementation must block until the entire join is executed.- Overrides:
handleBindings
in classControlledWorkerJoin
- Throws:
Exception
-
handleClose
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from class:AbstractCloseableIteration
Called byAbstractCloseableIteration.close()
when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.- Overrides:
handleClose
in classControlledWorkerJoin
- Throws:
QueryEvaluationException
-
determineTaskCreator
Deprecated, for removal: This API element is subject to removal in a future version. -
getNextBindJoinSize
protected int getNextBindJoinSize(int configuredBindJoinSize, int totalBindings) Deprecated, for removal: This API element is subject to removal in a future version.Return the size of the next bind join block.- Parameters:
configuredBindJoinSize
- the configured bind join sizetotalBindings
- the current process bindings from the intermediate result set- Returns:
-
ControlledWorkerBindJoin
l