Class ComputeTaskAdapter<TArg, TJobRes, TTaskRes>
Convenience adapter for IComputeTask<TArg, TJobRes, TRes> interface
Inheritance
Implements
Namespace: Apache.Ignite.Core.Compute
Assembly: Apache.Ignite.Core.dll
Syntax
public abstract class ComputeTaskAdapter<TArg, TJobRes, TTaskRes> : object, IComputeTask<TArg, TJobRes, TTaskRes>
Type Parameters
Name | Description |
---|---|
TArg | |
TJobRes | |
TTaskRes |
Methods
Map(IList<IClusterNode>, TArg)
This method is called to map or split Ignite task into multiple Ignite jobs. This is the first method that gets called when task execution starts.
Declaration
public abstract IDictionary<IComputeJob<TJobRes>, IClusterNode> Map(IList<IClusterNode> subgrid, TArg arg)
Parameters
Type | Name | Description |
---|---|---|
IList<IClusterNode> | subgrid | Nodes available for this task execution. Note that order of nodes is guaranteed to be randomized by container. This ensures that every time you simply iterate through Ignite nodes, the order of nodes will be random which over time should result into all nodes being used equally. |
TArg | arg | Task execution argument. Can be |
Returns
Type | Description |
---|---|
IDictionary<IComputeJob<TJobRes>, IClusterNode> | Map of Ignite jobs assigned to subgrid node. If |
OnResult(IComputeJobResult<TJobRes>, IList<IComputeJobResult<TJobRes>>)
Default implementation which will wait for all jobs to complete before calling Reduce(IList<IComputeJobResult<TJobRes>>) method.
If remote job resulted in exception Exception
is not null
),
then Failover policy will be returned if
the exception is instance of ClusterTopologyException
or ComputeExecutionRejectedException, 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.
Declaration
public virtual ComputeJobResultPolicy OnResult(IComputeJobResult<TJobRes> res, IList<IComputeJobResult<TJobRes>> rcvd)
Parameters
Type | Name | Description |
---|---|---|
IComputeJobResult<TJobRes> | res | Received remote Ignite executable result. |
IList<IComputeJobResult<TJobRes>> | rcvd | All previously received results. |
Returns
Type | Description |
---|---|
ComputeJobResultPolicy | Result policy that dictates how to process further upcoming job results. |
Reduce(IList<IComputeJobResult<TJobRes>>)
Reduces (or aggregates) results received so far into one compound result to be returned to caller via task.
Note, that if some jobs did not succeed and could not be failed over then the list of results passed into this method will include the failed results. Otherwise, failed results will not be in the list.
Declaration
public abstract TTaskRes Reduce(IList<IComputeJobResult<TJobRes>> results)
Parameters
Type | Name | Description |
---|---|---|
IList<IComputeJobResult<TJobRes>> | results | Received job results. Note that if task class has ComputeTaskNoResultCacheAttribute attribute, then this list will be empty. |
Returns
Type | Description |
---|---|
TTaskRes | Task result constructed from results of remote executions. |