Class TaskSlot<T extends TaskSlotPayload>

java.lang.Object
org.apache.flink.runtime.taskexecutor.slot.TaskSlot<T>
Type Parameters:
T - type of the TaskSlotPayload stored in this slot
All Implemented Interfaces:
AutoCloseable, org.apache.flink.util.AutoCloseableAsync

public class TaskSlot<T extends TaskSlotPayload> extends Object implements org.apache.flink.util.AutoCloseableAsync
Container for multiple tasks belonging to the same slot. A TaskSlot can be in one of the following states:
  • Free - The slot is empty and not allocated to a job
  • Releasing - The slot is about to be freed after it has become empty.
  • Allocated - The slot has been allocated for a job.
  • Active - The slot is in active use by a job manager which is the leader of the allocating job.

A task slot can only be allocated if it is in state free. An allocated task slot can transit to state active.

An active slot allows to add tasks from the respective job and with the correct allocation id. An active slot can be marked as inactive which sets the state back to allocated.

An allocated or active slot can only be freed if it is empty. If it is not empty, then it's state can be set to releasing indicating that it can be freed once it becomes empty.

  • Constructor Details

    • TaskSlot

      public TaskSlot(int index, ResourceProfile resourceProfile, int memoryPageSize, org.apache.flink.api.common.JobID jobId, AllocationID allocationId, Executor asyncExecutor)
  • Method Details

    • getIndex

      public int getIndex()
    • getResourceProfile

      public ResourceProfile getResourceProfile()
    • getJobId

      public org.apache.flink.api.common.JobID getJobId()
    • getAllocationId

      public AllocationID getAllocationId()
    • isEmpty

      public boolean isEmpty()
    • isActive

      public boolean isActive(org.apache.flink.api.common.JobID activeJobId, AllocationID activeAllocationId)
    • isAllocated

      public boolean isAllocated(org.apache.flink.api.common.JobID jobIdToCheck, AllocationID allocationIDToCheck)
    • isReleasing

      public boolean isReleasing()
    • getTasks

      public Iterator<T> getTasks()
      Get all tasks running in this task slot.
      Returns:
      Iterator to all currently contained tasks in this task slot.
    • getMemoryManager

      public MemoryManager getMemoryManager()
    • add

      public boolean add(T task)
      Add the given task to the task slot. This is only possible if there is not already another task with the same execution attempt id added to the task slot. In this case, the method returns true. Otherwise the task slot is left unchanged and false is returned.

      In case that the task slot state is not active an IllegalStateException is thrown. In case that the task's job id and allocation id don't match with the job id and allocation id for which the task slot has been allocated, an IllegalArgumentException is thrown.

      Parameters:
      task - to be added to the task slot
      Returns:
      true if the task was added to the task slot; otherwise false
      Throws:
      IllegalStateException - if the task slot is not in state active
    • remove

      public T remove(ExecutionAttemptID executionAttemptId)
      Remove the task identified by the given execution attempt id.
      Parameters:
      executionAttemptId - identifying the task to be removed
      Returns:
      The removed task if there was any; otherwise null.
    • clear

      public void clear()
      Removes all tasks from this task slot.
    • markActive

      public boolean markActive()
      Mark this slot as active. A slot can only be marked active if it's in state allocated.

      The method returns true if the slot was set to active. Otherwise it returns false.

      Returns:
      True if the new state of the slot is active; otherwise false
    • markInactive

      public boolean markInactive()
      Mark the slot as inactive/allocated. A slot can only be marked as inactive/allocated if it's in state allocated or active.
      Returns:
      True if the new state of the slot is allocated; otherwise false
    • generateSlotOffer

      public SlotOffer generateSlotOffer()
      Generate the slot offer from this TaskSlot.
      Returns:
      The sot offer which this task slot can provide
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • closeAsync

      public CompletableFuture<Void> closeAsync()
      Specified by:
      closeAsync in interface org.apache.flink.util.AutoCloseableAsync