Class VisorMultiNodeTask<A,​R,​J>

    • Field Detail

      • debug

        protected boolean debug
        Debug flag.
      • taskArg

        protected A taskArg
        Task argument.
      • start

        protected long start
        Task start time.
    • Constructor Detail

      • VisorMultiNodeTask

        public VisorMultiNodeTask()
    • Method Detail

      • job

        protected abstract VisorJob<A,​J> job​(A arg)
        Parameters:
        arg - Task arg.
        Returns:
        New job.
      • map

        @NotNull
        public @NotNull Map<? extends ComputeJob,​ClusterNode> map​(List<ClusterNode> subgrid,
                                                                        VisorTaskArgument<A> arg)
        This method is called to map or split grid task into multiple grid jobs. This is the first method that gets called when task execution starts.
        Specified by:
        map in interface ComputeTask<A,​R>
        Parameters:
        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 grid nodes, the order of nodes will be random which over time should result into all nodes being used equally.
        arg - Task execution argument. Can be null. This is the same argument as the one passed into Grid#execute(...) methods.
        Returns:
        Map of grid jobs assigned to subgrid node. Unless ComputeTaskContinuousMapper is injected into task, if null or empty map is returned, exception will be thrown.
      • result

        public ComputeJobResultPolicy result​(ComputeJobResult res,
                                             List<ComputeJobResult> rcvd)
        Asynchronous callback invoked every time a result from remote execution is received. It is ultimately upto this method to return a policy based on which the system will either wait for more results, reduce results received so far, or failover this job to another node. See ComputeJobResultPolicy for more information about result policies.
        Specified by:
        result in interface ComputeTask<A,​R>
        Parameters:
        res - Received remote grid executable result.
        rcvd - All previously received results. Note that if task class has ComputeTaskNoResultCache annotation, then this list will be empty.
        Returns:
        Result policy that dictates how to process further upcoming job results.
      • reduce

        @Nullable
        public final @Nullable VisorTaskResult<R> reduce​(List<ComputeJobResult> results)
        Reduces (or aggregates) results received so far into one compound result to be returned to caller via ComputeTaskFuture.get() method.

        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.

        Specified by:
        reduce in interface ComputeTask<A,​R>
        Parameters:
        results - Received results of broadcasted remote executions. Note that if task class has ComputeTaskNoResultCache annotation, then this list will be empty.
        Returns:
        Grid job result constructed from results of remote executions.