Package org.infinispan.stream.impl
Class ClusterStreamManagerImpl<Original,K>
- java.lang.Object
-
- org.infinispan.stream.impl.ClusterStreamManagerImpl<Original,K>
-
- Type Parameters:
K
- the cache key type
- All Implemented Interfaces:
ClusterStreamManager<Original,K>
- Direct Known Subclasses:
PartitionAwareClusterStreamManager
public class ClusterStreamManagerImpl<Original,K> extends Object implements ClusterStreamManager<Original,K>
Cluster stream manager that sends all requests using theRpcManager
to do the underlying communications.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.infinispan.stream.impl.ClusterStreamManager
ClusterStreamManager.RemoteIteratorPublisher<K>, ClusterStreamManager.ResultsCallback<R>
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,org.infinispan.stream.impl.ClusterStreamManagerImpl.RequestTracker>
currentlyRunning
protected CommandsFactory
factory
protected Set<org.reactivestreams.Subscriber>
iteratorsRunning
protected Address
localAddress
protected static Log
log
protected AtomicInteger
requestId
protected RpcManager
rpc
protected RpcOptions
rpcOptions
protected static boolean
trace
-
Constructor Summary
Constructors Constructor Description ClusterStreamManagerImpl()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
awaitCompletion(Object id, long time, TimeUnit unit)
Awaits completion of the given request.void
forgetOperation(Object id)
Frees any resources related to this operation and signals to any ongoing remote operations to no longer continue processingboolean
isComplete(Object id)
Tests whether this operation is still pending or not.protected static void
markTrackerWithException(org.infinispan.stream.impl.ClusterStreamManagerImpl.RequestTracker<?> tracker, Address dest, Throwable e, Object uuid)
<R1> boolean
receiveResponse(Object id, Address origin, boolean complete, org.infinispan.commons.util.IntSet missingSegments, R1 response)
Receives a response for a given request<E> ClusterStreamManager.RemoteIteratorPublisher<E>
remoteIterationPublisher(boolean parallelStream, Supplier<Map.Entry<Address,org.infinispan.commons.util.IntSet>> targets, Set<K> keysToInclude, IntFunction<Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, Iterable<org.infinispan.stream.impl.intops.IntermediateOperation> intermediateOperations)
<R> Object
remoteStreamOperation(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, KeyTrackingTerminalOperation<Original,K,R> operation, ClusterStreamManager.ResultsCallback<Collection<R>> callback)
Key tracking remote operation that doesn't have rehash enabled.<R> Object
remoteStreamOperation(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, TerminalOperation<Original,R> operation, ClusterStreamManager.ResultsCallback<R> callback, Predicate<? super R> earlyTerminatePredicate)
Performs the remote stream operation without rehash awareness.Object
remoteStreamOperationRehashAware(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, KeyTrackingTerminalOperation<Original,K,?> operation, ClusterStreamManager.ResultsCallback<Collection<K>> callback)
Key tracking remote operation that has rehash enabled<R> Object
remoteStreamOperationRehashAware(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, TerminalOperation<Original,R> operation, ClusterStreamManager.ResultsCallback<R> callback, Predicate<? super R> earlyTerminatePredicate)
Performs the remote stream operation with rehash awareness.void
start()
-
-
-
Field Detail
-
currentlyRunning
protected final Map<String,org.infinispan.stream.impl.ClusterStreamManagerImpl.RequestTracker> currentlyRunning
-
iteratorsRunning
protected final Set<org.reactivestreams.Subscriber> iteratorsRunning
-
requestId
protected final AtomicInteger requestId
-
rpc
protected RpcManager rpc
-
factory
protected CommandsFactory factory
-
rpcOptions
protected RpcOptions rpcOptions
-
localAddress
protected Address localAddress
-
log
protected static final Log log
-
trace
protected static final boolean trace
-
-
Method Detail
-
start
public void start()
-
remoteStreamOperation
public <R> Object remoteStreamOperation(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, TerminalOperation<Original,R> operation, ClusterStreamManager.ResultsCallback<R> callback, Predicate<? super R> earlyTerminatePredicate)
Description copied from interface:ClusterStreamManager
Performs the remote stream operation without rehash awareness.- Specified by:
remoteStreamOperation
in interfaceClusterStreamManager<Original,K>
- Type Parameters:
R
- the type of response- Parameters:
parallelDistribution
- whether or not parallel distribution is enabledparallelStream
- whether or not the stream is paralllelch
- the consistent hash to use when determining segment ownershipsegments
- the segments that this request should utilizekeysToInclude
- which keys to include in the requestkeysToExclude
- which keys to exclude in the requestincludeLoader
- whether or not to use a loaderentryStream
- whether the remote stream should be an entry or key streamoperation
- the actual operation to performcallback
- the callback to collect individual node resultsearlyTerminatePredicate
- a predicate to determine if this operation should stop based on intermediate results- Returns:
- the operation id to be used for further calls
-
remoteStreamOperationRehashAware
public <R> Object remoteStreamOperationRehashAware(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, TerminalOperation<Original,R> operation, ClusterStreamManager.ResultsCallback<R> callback, Predicate<? super R> earlyTerminatePredicate)
Description copied from interface:ClusterStreamManager
Performs the remote stream operation with rehash awareness.- Specified by:
remoteStreamOperationRehashAware
in interfaceClusterStreamManager<Original,K>
- Type Parameters:
R
- the type of response- Parameters:
parallelDistribution
- whether or not parallel distribution is enabledparallelStream
- whether or not the stream is paralllelch
- the consistent hash to use when determining segment ownershipsegments
- the segments that this request should utilizekeysToInclude
- which keys to include in the requestkeysToExclude
- which keys to exclude in the requestincludeLoader
- whether or not to use a loaderentryStream
- whether the remote stream should be an entry or key streamoperation
- the actual operation to performcallback
- the callback to collect individual node resultsearlyTerminatePredicate
- a predicate to determine if this operation should stop based on intermediate results- Returns:
- the operation id to be used for further calls
-
remoteStreamOperation
public <R> Object remoteStreamOperation(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, KeyTrackingTerminalOperation<Original,K,R> operation, ClusterStreamManager.ResultsCallback<Collection<R>> callback)
Description copied from interface:ClusterStreamManager
Key tracking remote operation that doesn't have rehash enabled.- Specified by:
remoteStreamOperation
in interfaceClusterStreamManager<Original,K>
- Type Parameters:
R
- the type of response- Parameters:
parallelDistribution
- whether or not parallel distribution is enabledparallelStream
- whether or not the stream is paralllelch
- the consistent hash to use when determining segment ownershipsegments
- the segments that this request should utilizekeysToInclude
- which keys to include in the requestkeysToExclude
- which keys to exclude in the requestincludeLoader
- whether or not to use a loaderentryStream
- whether the remote stream should be an entry or key streamoperation
- the actual operation to performcallback
- the callback to collect individual node results- Returns:
- the operation id to be used for further calls
-
remoteStreamOperationRehashAware
public Object remoteStreamOperationRehashAware(boolean parallelDistribution, boolean parallelStream, ConsistentHash ch, org.infinispan.commons.util.IntSet segments, Set<K> keysToInclude, Map<Integer,Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, KeyTrackingTerminalOperation<Original,K,?> operation, ClusterStreamManager.ResultsCallback<Collection<K>> callback)
Description copied from interface:ClusterStreamManager
Key tracking remote operation that has rehash enabled- Specified by:
remoteStreamOperationRehashAware
in interfaceClusterStreamManager<Original,K>
- Parameters:
parallelDistribution
- whether or not parallel distribution is enabledparallelStream
- whether or not the stream is paralllelch
- the consistent hash to use when determining segment ownershipsegments
- the segments that this request should utilizekeysToInclude
- which keys to include in the requestkeysToExclude
- which keys to exclude in the requestincludeLoader
- whether or not to use a loaderentryStream
- whether the remote stream should be an entry or key streamoperation
- the actual operation to performcallback
- the callback to collect individual node results- Returns:
- the operation id to be used for further calls
-
markTrackerWithException
protected static void markTrackerWithException(org.infinispan.stream.impl.ClusterStreamManagerImpl.RequestTracker<?> tracker, Address dest, Throwable e, Object uuid)
-
isComplete
public boolean isComplete(Object id)
Description copied from interface:ClusterStreamManager
Tests whether this operation is still pending or not.- Specified by:
isComplete
in interfaceClusterStreamManager<Original,K>
- Parameters:
id
- the id of the operation that was returned from the invocation- Returns:
- whether or not it is completed
-
awaitCompletion
public boolean awaitCompletion(Object id, long time, TimeUnit unit) throws InterruptedException
Description copied from interface:ClusterStreamManager
Awaits completion of the given request. Returns true when the request completes otherwise returns false after the time elapses- Specified by:
awaitCompletion
in interfaceClusterStreamManager<Original,K>
- Parameters:
id
- the ide of the operation that was returned from the invocation - must be non nulltime
- how long to wait before returning false - must be greater than 0unit
- controls how long the time wait is- Returns:
- whether or not the request is complete
- Throws:
InterruptedException
-
forgetOperation
public void forgetOperation(Object id)
Description copied from interface:ClusterStreamManager
Frees any resources related to this operation and signals to any ongoing remote operations to no longer continue processing- Specified by:
forgetOperation
in interfaceClusterStreamManager<Original,K>
- Parameters:
id
- the ide of the operation that was returned from the invocation - can be null in which case this is a noop
-
receiveResponse
public <R1> boolean receiveResponse(Object id, Address origin, boolean complete, org.infinispan.commons.util.IntSet missingSegments, R1 response)
Description copied from interface:ClusterStreamManager
Receives a response for a given request- Specified by:
receiveResponse
in interfaceClusterStreamManager<Original,K>
- Type Parameters:
R1
- The type of the response- Parameters:
id
- The request idorigin
- The origin of the responsecomplete
- Whether or not this is a completed responsemissingSegments
- The segments that were suspectedresponse
- The actual response value- Returns:
- Whether or not the operation should continue operating, only valid if complete was false
-
remoteIterationPublisher
public <E> ClusterStreamManager.RemoteIteratorPublisher<E> remoteIterationPublisher(boolean parallelStream, Supplier<Map.Entry<Address,org.infinispan.commons.util.IntSet>> targets, Set<K> keysToInclude, IntFunction<Set<K>> keysToExclude, boolean includeLoader, boolean entryStream, Iterable<org.infinispan.stream.impl.intops.IntermediateOperation> intermediateOperations)
- Specified by:
remoteIterationPublisher
in interfaceClusterStreamManager<Original,K>
entryStream
- whether the remote stream should be an entry or key stream- Returns:
-
-