All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
FineGrainedSlotManager

public interface SlotManager extends AutoCloseable
The slot manager is responsible for maintaining a view on all registered task manager slots, their allocation and all pending slot requests. Whenever a new slot is registered or an allocated slot is freed, then it tries to fulfill another pending slot request. Whenever there are not enough slots available the slot manager will notify the resource manager about it via ResourceAllocator.declareResourceNeeded(java.util.Collection<org.apache.flink.runtime.resourcemanager.slotmanager.ResourceDeclaration>).

In order to free resources and avoid resource leaks, idling task managers (task managers whose slots are currently not used) and pending slot requests time out triggering their release and failure, respectively.

  • Method Details

    • getNumberRegisteredSlots

      int getNumberRegisteredSlots()
    • getNumberRegisteredSlotsOf

      int getNumberRegisteredSlotsOf(InstanceID instanceId)
    • getNumberFreeSlots

      int getNumberFreeSlots()
    • getNumberFreeSlotsOf

      int getNumberFreeSlotsOf(InstanceID instanceId)
    • getRegisteredResource

      ResourceProfile getRegisteredResource()
    • getRegisteredResourceOf

      ResourceProfile getRegisteredResourceOf(InstanceID instanceID)
    • getFreeResource

      ResourceProfile getFreeResource()
    • getFreeResourceOf

      ResourceProfile getFreeResourceOf(InstanceID instanceID)
    • getAllocatedSlotsOf

      Collection<SlotInfo> getAllocatedSlotsOf(InstanceID instanceID)
    • start

      void start(ResourceManagerId newResourceManagerId, Executor newMainThreadExecutor, ResourceAllocator newResourceAllocator, ResourceEventListener resourceEventListener, BlockedTaskManagerChecker newBlockedTaskManagerChecker)
      Starts the slot manager with the given leader id and resource manager actions.
      Parameters:
      newResourceManagerId - to use for communication with the task managers
      newMainThreadExecutor - to use to run code in the ResourceManager's main thread
      newResourceAllocator - to use for resource (de-)allocations
      resourceEventListener - to use for notify resource not enough
      newBlockedTaskManagerChecker - to query whether a task manager is blocked
    • suspend

      void suspend()
      Suspends the component. This clears the internal state of the slot manager.
    • clearResourceRequirements

      void clearResourceRequirements(org.apache.flink.api.common.JobID jobId)
      Notifies the slot manager that the resource requirements for the given job should be cleared. The slot manager may assume that no further updates to the resource requirements will occur.
      Parameters:
      jobId - job for which to clear the requirements
    • processResourceRequirements

      void processResourceRequirements(ResourceRequirements resourceRequirements)
      Notifies the slot manager about the resource requirements of a job.
      Parameters:
      resourceRequirements - resource requirements of a job
    • registerTaskManager

      SlotManager.RegistrationResult registerTaskManager(TaskExecutorConnection taskExecutorConnection, SlotReport initialSlotReport, ResourceProfile totalResourceProfile, ResourceProfile defaultSlotResourceProfile)
      Registers a new task manager at the slot manager. This will make the task managers slots known and, thus, available for allocation.
      Parameters:
      taskExecutorConnection - for the new task manager
      initialSlotReport - for the new task manager
      totalResourceProfile - for the new task manager
      defaultSlotResourceProfile - for the new task manager
      Returns:
      The result of task manager registration
    • unregisterTaskManager

      boolean unregisterTaskManager(InstanceID instanceId, Exception cause)
      Unregisters the task manager identified by the given instance id and its associated slots from the slot manager.
      Parameters:
      instanceId - identifying the task manager to unregister
      cause - for unregistering the TaskManager
      Returns:
      True if there existed a registered task manager with the given instance id
    • reportSlotStatus

      boolean reportSlotStatus(InstanceID instanceId, SlotReport slotReport)
      Reports the current slot allocations for a task manager identified by the given instance id.
      Parameters:
      instanceId - identifying the task manager for which to report the slot status
      slotReport - containing the status for all of its slots
      Returns:
      true if the slot status has been updated successfully, otherwise false
    • freeSlot

      void freeSlot(SlotID slotId, AllocationID allocationId)
      Free the given slot from the given allocation. If the slot is still allocated by the given allocation id, then the slot will be marked as free and will be subject to new slot requests.
      Parameters:
      slotId - identifying the slot to free
      allocationId - with which the slot is presumably allocated
    • setFailUnfulfillableRequest

      void setFailUnfulfillableRequest(boolean failUnfulfillableRequest)
    • triggerResourceRequirementsCheck

      void triggerResourceRequirementsCheck()
      Trigger the resource requirement check. This method will be called when some slot statuses changed.