Class GridJobContextImpl

    • Constructor Detail

      • GridJobContextImpl

        public GridJobContextImpl()
        Empty constructor required by Externalizable.
      • GridJobContextImpl

        public GridJobContextImpl​(@Nullable
                                  @Nullable GridKernalContext ctx,
                                  IgniteUuid jobId)
        Parameters:
        ctx - Kernal context.
        jobId - Job ID.
    • Method Detail

      • job

        public void job​(GridJobWorker job)
        Parameters:
        job - Job worker.
      • getJobId

        public IgniteUuid getJobId()
        Gets ID of the job this context belongs to.
        Specified by:
        getJobId in interface ComputeJobContext
        Returns:
        ID of the job this context belongs to.
      • setAttribute

        public void setAttribute​(Object key,
                                 @Nullable
                                 @Nullable Object val)
        Sets an attribute into this job context.
        Specified by:
        setAttribute in interface ComputeJobContext
        Parameters:
        key - Attribute key.
        val - Attribute value.
      • setAttributes

        public void setAttributes​(Map<?,​?> attrs)
        Sets map of attributes into this job context.
        Specified by:
        setAttributes in interface ComputeJobContext
        Parameters:
        attrs - Local attributes.
      • getAttribute

        public <K,​V> V getAttribute​(K key)
        Gets attribute from this job context.
        Specified by:
        getAttribute in interface ComputeJobContext
        Type Parameters:
        K - Type of the attribute key.
        V - Type of the attribute value.
        Parameters:
        key - Attribute key.
        Returns:
        Attribute value (possibly null).
      • heldcc

        public boolean heldcc()
        Checks if job execution has been temporarily held (suspended).

        If job has completed its execution, then false is always returned.

        Specified by:
        heldcc in interface ComputeJobContinuation
        Returns:
        True if job has been held.
      • holdcc

        public <T> T holdcc()
        Holds (suspends) a given job indefinitely until ComputeJobContinuation.callcc() is called. Job will remain in active queue, but its ComputeJobContinuation.heldcc() method will return true. Implementations of CollisionSpi should check if jobs are held or not as needed.

        All jobs should stop their execution and return right after calling 'holdcc(..)' method. For convenience, this method always returns null, so you can hold and return in one line by calling 'return holdcc()' method.

        If job is not running or has completed its execution, then no-op.

        The 'cc' suffix stands for 'current-continuation' which is a pretty standard notation for this concept that originated from Scheme programming language. Basically, the job is held to be continued later, hence the name of the method.

        Specified by:
        holdcc in interface ComputeJobContinuation
        Type Parameters:
        T - Type of the job execution result.
        Returns:
        Always returns null for convenience to be used in code with return statement.
      • holdcc

        public <T> T holdcc​(long timeout)
        Holds (suspends) a given job for specified timeout or until ComputeJobContinuation.callcc() is called. Holds (suspends) a given job for specified timeout or until ComputeJobContinuation.callcc() is called. Job will remain in active queue, but its ComputeJobContinuation.heldcc() method will return true. Implementations of CollisionSpi should check if jobs are held or not as needed.

        All jobs should stop their execution and return right after calling 'holdcc(..)' method. For convenience, this method always returns null, so you can hold and return in one line by calling 'return holdcc()'.

        If job is not running or has completed its execution, then no-op.

        The 'cc' suffix stands for 'current-continuation' which is a fairly standard notation for this concept. Basically, the job is held to be continued later, hence the name of the method.

        Specified by:
        holdcc in interface ComputeJobContinuation
        Type Parameters:
        T - Type of the job execution result.
        Parameters:
        timeout - Timeout in milliseconds after which job will be automatically resumed.
        Returns:
        Always returns null for convenience to be used in code with return statement.
      • callcc

        public void callcc()
        Resumes job if it was held by ComputeJobContinuation.holdcc() method. Resuming job means that ComputeJob.execute() method will be called again. It is user's responsibility to check, as needed, whether job is executing from scratch and has been resumed.

        Note that the job is resumed with exactly the same state as of when it was 'held' via the ComputeJobContinuation.holdcc() method.

        If job is not running, has not been suspended, or has completed its execution, then no-op.

        The method is named after 'call-with-current-continuation' design pattern, commonly abbreviated as 'call/cc', which originated in Scheme programming language.

        Specified by:
        callcc in interface ComputeJobContinuation