Package org.apache.ignite.compute
Class ComputeTaskAdapter<T,R>
- java.lang.Object
-
- org.apache.ignite.compute.ComputeTaskAdapter<T,R>
-
- Type Parameters:
T
- Type of the task argument.R
- Type of the task result returning fromComputeTask.reduce(List)
method.
- All Implemented Interfaces:
Serializable
,ComputeTask<T,R>
- Direct Known Subclasses:
ComputeTaskSplitAdapter
public abstract class ComputeTaskAdapter<T,R> extends Object implements ComputeTask<T,R>
Convenience adapter forComputeTask
interface. Here is an example of howComputeTaskAdapter
can be used:public class MyFooBarTask extends ComputeTaskAdapter<String, String> { // Inject load balancer. @LoadBalancerResource ComputeLoadBalancer balancer; // Map jobs to grid nodes. public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, String arg) throws IgniteCheckedException { Map<MyFooBarJob, ClusterNode> jobs = new HashMap<MyFooBarJob, ClusterNode>(subgrid.size()); // In more complex cases, you can actually do // more complicated assignments of jobs to nodes. for (int i = 0; i < subgrid.size(); i++) { // Pick the next best balanced node for the job. jobs.put(new MyFooBarJob(arg), balancer.getBalancedNode()) } return jobs; } // Aggregate results into one compound result. public String reduce(List<ComputeJobResult> results) throws IgniteCheckedException { // For the purpose of this example we simply // concatenate string representation of every // job result StringBuilder buf = new StringBuilder(); for (ComputeJobResult res : results) { // Append string representation of result // returned by every job. buf.append(res.getData().string()); } return buf.string(); } }
For more information refer toComputeTask
documentation.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description ComputeTaskAdapter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ComputeJobResultPolicy
result(ComputeJobResult res, List<ComputeJobResult> rcvd)
Default implementation which will wait for all jobs to complete before callingComputeTask.reduce(List)
method.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.ignite.compute.ComputeTask
map, reduce
-
-
-
-
Method Detail
-
result
public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> rcvd) throws IgniteException
Default implementation which will wait for all jobs to complete before callingComputeTask.reduce(List)
method.If remote job resulted in exception (
ComputeJobResult.getException()
is notnull
), thenComputeJobResultPolicy.FAILOVER
policy will be returned if the exception is instance ofClusterTopologyException
orComputeExecutionRejectedException
, which means that remote node either failed or job execution was rejected before it got a chance to start. In all other cases the exception will be rethrown which will ultimately cause task to fail.- Specified by:
result
in interfaceComputeTask<T,R>
- Parameters:
res
- Received remote grid executable result.rcvd
- All previously received results.- Returns:
- Result policy that dictates how to process further upcoming job results.
- Throws:
IgniteException
- If handling a job result caused an error effectively rejecting a failover. This exception will be thrown out ofComputeTaskFuture.get()
method.
-
-