Class Task

  • All Implemented Interfaces:
    Runnable, PartitionProducerStateProvider, TaskSlotPayload, TaskActions

    public class Task
    extends Object
    implements Runnable, TaskSlotPayload, TaskActions, PartitionProducerStateProvider
    The Task represents one execution of a parallel subtask on a TaskManager. A Task wraps a Flink operator (which may be a user function) and runs it, providing all services necessary for example to consume input data, produce its results (intermediate result partitions) and communicate with the JobManager.

    The Flink operators (implemented as subclasses of TaskInvokable have only data readers, writers, and certain event callbacks. The task connects those to the network stack and actor messages, and tracks the state of the execution and handles exceptions.

    Tasks have no knowledge about how they relate to other tasks, or whether they are the first attempt to execute the task, or a repeated attempt. All of that is only known to the JobManager. All the task knows are its own runnable code, the task's configuration, and the IDs of the intermediate results to consume and produce (if any).

    Each Task is run by one dedicated thread.

    • Method Detail

      • getJobID

        public org.apache.flink.api.common.JobID getJobID()
        Specified by:
        getJobID in interface TaskSlotPayload
      • getTaskInfo

        public org.apache.flink.api.common.TaskInfo getTaskInfo()
      • getJobConfiguration

        public org.apache.flink.configuration.Configuration getJobConfiguration()
      • getTaskConfiguration

        public org.apache.flink.configuration.Configuration getTaskConfiguration()
      • getExecutingThread

        public Thread getExecutingThread()
      • isBackPressured

        public boolean isBackPressured()
      • getExecutionState

        public ExecutionState getExecutionState()
        Returns the current execution state of the task.
        Returns:
        The current execution state of the task.
      • isCanceledOrFailed

        public boolean isCanceledOrFailed()
        Checks whether the task has failed, is canceled, or is being canceled at the moment.
        Returns:
        True is the task in state FAILED, CANCELING, or CANCELED, false otherwise.
      • getFailureCause

        public Throwable getFailureCause()
        If the task has failed, this method gets the exception that caused this task to fail. Otherwise this method returns null.
        Returns:
        The exception that caused the task to fail, or null, if the task has not failed.
      • startTaskThread

        public void startTaskThread()
        Starts the task's thread.
      • run

        public void run()
        The core work method that bootstraps the task and executes its code.
        Specified by:
        run in interface Runnable
      • cancelExecution

        public void cancelExecution()
        Cancels the task execution. If the task is already in a terminal state (such as FINISHED, CANCELED, FAILED), or if the task is already canceling this does nothing. Otherwise it sets the state to CANCELING, and, if the invokable code is running, starts an asynchronous thread that aborts that code.

        This method never blocks.

      • failExternally

        public void failExternally​(Throwable cause)
        Marks task execution failed for an external reason (a reason other than the task code itself throwing an exception). If the task is already in a terminal state (such as FINISHED, CANCELED, FAILED), or if the task is already canceling this does nothing. Otherwise it sets the state to FAILED, and, if the invokable code is running, starts an asynchronous thread that aborts that code.

        This method never blocks.

        Specified by:
        failExternally in interface TaskActions
        Specified by:
        failExternally in interface TaskSlotPayload
        Parameters:
        cause - of the failure
      • triggerCheckpointBarrier

        public void triggerCheckpointBarrier​(long checkpointID,
                                             long checkpointTimestamp,
                                             CheckpointOptions checkpointOptions)
        Calls the invokable to trigger a checkpoint.
        Parameters:
        checkpointID - The ID identifying the checkpoint.
        checkpointTimestamp - The timestamp associated with the checkpoint.
        checkpointOptions - Options for performing this checkpoint.
      • notifyCheckpointComplete

        public void notifyCheckpointComplete​(long checkpointID)
      • notifyCheckpointAborted

        public void notifyCheckpointAborted​(long checkpointID,
                                            long latestCompletedCheckpointId)
      • notifyCheckpointSubsumed

        public void notifyCheckpointSubsumed​(long checkpointID)
      • deliverOperatorEvent

        public void deliverOperatorEvent​(OperatorID operator,
                                         org.apache.flink.util.SerializedValue<OperatorEvent> evt)
                                  throws org.apache.flink.util.FlinkException
        Dispatches an operator event to the invokable task.

        If the event delivery did not succeed, this method throws an exception. Callers can use that exception for error reporting, but need not react with failing this task (this method takes care of that).

        Throws:
        org.apache.flink.util.FlinkException - This method throws exceptions indicating the reason why delivery did not succeed.
      • logTaskThreadStackTrace

        public static void logTaskThreadStackTrace​(Thread thread,
                                                   String taskName,
                                                   long timeoutMs,
                                                   String action)