org.apache.ignite.internal

## Class GridJobResultImpl

- java.lang.Object
- - org.apache.ignite.internal.GridJobResultImpl

All Implemented Interfaces:
  ComputeJobResult

    public class GridJobResultImpl
    extends Object
    implements ComputeJobResult

Class provides implementation for job result.

### Constructor Summary

Constructors
Constructor and Description
`GridJobResultImpl(ComputeJob job, IgniteUuid jobId, ClusterNode node, GridJobSiblingImpl sib)`

### Method Summary

Methods
`void` `clearData()` Clears stored job data.
`Object` `getData()` Gets data returned by remote job if it didn't fail.
`IgniteException` `getException()` Gets exception produced by execution of remote job, or `null` if remote execution finished normally and did not produce any exceptions.
`ComputeJob` `getJob()` Gets local instance of remote job returned by `ComputeTask.map(List, Object)` method.
`ComputeJobContext` `getJobContext()` Gets job context.
`ClusterNode` `getNode()` Gets node this job executed on.
`GridJobSiblingImpl` `getSibling()`
`boolean` `hasResponse()`
`boolean` `isCancelled()` Gets job cancellation status.
`boolean` `isOccupied()`
`void` `onResponse(Object data, IgniteException ex, Map<Object,Object> jobAttrs, boolean isCancelled)`
`void` `resetResponse()`
`void` `setNode(ClusterNode node)`
`void` `setOccupied(boolean isOccupied)`
`String` `toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### GridJobResultImpl

    public GridJobResultImpl(ComputeJob job,
                     IgniteUuid jobId,
                     ClusterNode node,
                     GridJobSiblingImpl sib)

Parameters:
  `job` - Job instance.
  `jobId` - ID of the job.
  `node` - Node from where this result was received.
  `sib` - Sibling associated with this result.

### Method Detail

#### getJob

    public ComputeJob getJob()

Gets local instance of remote job returned by `ComputeTask.map(List, Object)` method.

Specified by:
  `getJob` in interface `ComputeJobResult`
Returns:
  Local instance of remote job returned by `ComputeTask.map(List, Object)` method.

#### getJobContext

    public ComputeJobContext getJobContext()

Gets job context. Use job context to access job unique ID or to get/set jobs attributes. Context is attached to a job and travels with it wherever it goes. For example, if a job gets failed-over from one node to another, then its context will be failed over with it and all attributes that were set on the job on the first node will be available on the new node.

Specified by:
  `getJobContext` in interface `ComputeJobResult`
Returns:
  Job context.

#### getSibling

    public GridJobSiblingImpl getSibling()

Returns:
  Sibling associated with this result.

#### getNode

    public ClusterNode getNode()

Gets node this job executed on.

Specified by:
  `getNode` in interface `ComputeJobResult`
Returns:
  Node this job executed on.

#### getData

    public Object getData()

Gets data returned by remote job if it didn't fail. This data is the object returned from `ComputeJob.execute()` method.

Note that if task is annotated with `ComputeTaskNoResultCache` annotation, then job results will not be cached and will be available only in `ComputeTask.result(ComputeJobResult, List)` method for every individual job, but not in `ComputeTask.reduce(List)` method. This feature was added to avoid excessive storing of overly large results.

Specified by:
  `getData` in interface `ComputeJobResult`
Returns:
  Data returned by remote job's `ComputeJob.execute()` method if it didn't fail.

#### getException

    public IgniteException getException()

Gets exception produced by execution of remote job, or `null` if remote execution finished normally and did not produce any exceptions.

Specified by:
  `getException` in interface `ComputeJobResult`
Returns:
  `IgniteException` produced by execution of remote job or `null` if no exception was produced.

  Note that if remote job resulted in `RuntimeException` or `Error` then they will be wrapped into `ComputeUserUndeclaredException` returned by this method.

  If job on remote node was rejected (cancelled while it was on waiting queue), then `ComputeExecutionRejectedException` will be returned.

  If node on which job was computing failed, then `ClusterTopologyException` is returned.

#### isCancelled

    public boolean isCancelled()

Gets job cancellation status. Returns `true` if job received cancellation request on remote node. Note that job, after receiving cancellation request, will still need to finish and return, hence `ComputeJobResult.getData()` method may contain execution result even if the job was canceled.

Job can receive cancellation request if the task was explicitly cancelled from future (see `IgniteFuture.cancel()`) or if task completed prior to getting results from all remote jobs.

Specified by:
  `isCancelled` in interface `ComputeJobResult`
Returns:
  `true` if job received cancellation request and `false` otherwise.

#### setNode

    public void setNode(ClusterNode node)

Parameters:
  `node` - Node from where this result was received.

#### onResponse

    public void onResponse(@Nullable
                  Object data,
                  @Nullable
                  IgniteException ex,
                  @Nullable
                  Map<Object,Object> jobAttrs,
                  boolean isCancelled)

Parameters:
  `data` - Job data.
  `ex` - Job exception.
  `jobAttrs` - Job attributes.
  `isCancelled` - Whether job was cancelled or not.

#### setOccupied

    public void setOccupied(boolean isOccupied)

Parameters:
  `isOccupied` - `True` if job for this response is being sent.

#### isOccupied

    public boolean isOccupied()

Returns:
  `True` if job for this response is being sent.

#### clearData

    public void clearData()

Clears stored job data.

#### resetResponse

    public void resetResponse()

#### hasResponse

    public boolean hasResponse()

Returns:
  `true` if remote job responded.

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

2017 Copyright © Apache Software Foundation

Follow @ApacheIgnite

Ignite Fabric | : ver. 2.0.0
Release Date | : April 30 2017