Interface TaskSlotTable<T extends TaskSlotPayload>

    • Method Detail

      • getActiveTaskSlotAllocationIds

        Set<AllocationID> getActiveTaskSlotAllocationIds()
        Returns the AllocationID of any active task listed in this TaskSlotTable.
        Returns:
        The AllocationID of any active task.
      • getActiveTaskSlotAllocationIdsPerJob

        Set<AllocationID> getActiveTaskSlotAllocationIdsPerJob​(JobID jobId)
        Returns the AllocationID of active TaskSlots attached to the job with the given JobID.
        Parameters:
        jobId - The JobID of the job for which the AllocationIDs of the attached active TaskSlots shall be returned.
        Returns:
        A set of AllocationIDs that belong to active TaskSlots having the passed JobID.
      • allocateSlot

        @VisibleForTesting
        boolean allocateSlot​(int index,
                             JobID jobId,
                             AllocationID allocationId,
                             Duration slotTimeout)
        Allocate the slot with the given index for the given job and allocation id. If negative index is given, a new auto increasing index will be generated. Returns true if the slot could be allocated. Otherwise it returns false.
        Parameters:
        index - of the task slot to allocate, use negative value for dynamic slot allocation
        jobId - to allocate the task slot for
        allocationId - identifying the allocation
        slotTimeout - until the slot times out
        Returns:
        True if the task slot could be allocated; otherwise false
      • allocateSlot

        boolean allocateSlot​(int index,
                             JobID jobId,
                             AllocationID allocationId,
                             ResourceProfile resourceProfile,
                             Duration slotTimeout)
        Allocate the slot with the given index for the given job and allocation id. If negative index is given, a new auto increasing index will be generated. Returns true if the slot could be allocated. Otherwise it returns false.
        Parameters:
        index - of the task slot to allocate, use negative value for dynamic slot allocation
        jobId - to allocate the task slot for
        allocationId - identifying the allocation
        resourceProfile - of the requested slot, used only for dynamic slot allocation and will be ignored otherwise
        slotTimeout - until the slot times out
        Returns:
        True if the task slot could be allocated; otherwise false
      • markSlotActive

        boolean markSlotActive​(AllocationID allocationId)
                        throws SlotNotFoundException
        Marks the slot under the given allocation id as active. If the slot could not be found, then a SlotNotFoundException is thrown.
        Parameters:
        allocationId - to identify the task slot to mark as active
        Returns:
        True if the slot could be marked active; otherwise false
        Throws:
        SlotNotFoundException - if the slot could not be found for the given allocation id
      • markSlotInactive

        boolean markSlotInactive​(AllocationID allocationId,
                                 Duration slotTimeout)
                          throws SlotNotFoundException
        Marks the slot under the given allocation id as inactive. If the slot could not be found, then a SlotNotFoundException is thrown.
        Parameters:
        allocationId - to identify the task slot to mark as inactive
        slotTimeout - until the slot times out
        Returns:
        True if the slot could be marked inactive
        Throws:
        SlotNotFoundException - if the slot could not be found for the given allocation id
      • freeSlot

        default int freeSlot​(AllocationID allocationId)
                      throws SlotNotFoundException
        Try to free the slot. If the slot is empty it will set the state of the task slot to free and return its index. If the slot is not empty, then it will set the state of the task slot to releasing, fail all tasks and return -1.
        Parameters:
        allocationId - identifying the task slot to be freed
        Returns:
        Index of the freed slot if the slot could be freed; otherwise -1
        Throws:
        SlotNotFoundException - if there is not task slot for the given allocation id
      • freeSlot

        int freeSlot​(AllocationID allocationId,
                     Throwable cause)
              throws SlotNotFoundException
        Tries to free the slot. If the slot is empty it will set the state of the task slot to free and return its index. If the slot is not empty, then it will set the state of the task slot to releasing, fail all tasks and return -1.
        Parameters:
        allocationId - identifying the task slot to be freed
        cause - to fail the tasks with if slot is not empty
        Returns:
        Index of the freed slot if the slot could be freed; otherwise -1
        Throws:
        SlotNotFoundException - if there is not task slot for the given allocation id
      • isValidTimeout

        boolean isValidTimeout​(AllocationID allocationId,
                               UUID ticket)
        Check whether the timeout with ticket is valid for the given allocation id.
        Parameters:
        allocationId - to check against
        ticket - of the timeout
        Returns:
        True if the timeout is valid; otherwise false
      • isAllocated

        boolean isAllocated​(int index,
                            JobID jobId,
                            AllocationID allocationId)
        Check whether the slot for the given index is allocated for the given job and allocation id.
        Parameters:
        index - of the task slot
        jobId - for which the task slot should be allocated
        allocationId - which should match the task slot's allocation id
        Returns:
        True if the given task slot is allocated for the given job and allocation id
      • tryMarkSlotActive

        boolean tryMarkSlotActive​(JobID jobId,
                                  AllocationID allocationId)
        Try to mark the specified slot as active if it has been allocated by the given job.
        Parameters:
        jobId - of the allocated slot
        allocationId - identifying the allocation
        Returns:
        True if the task slot could be marked active.
      • isSlotFree

        boolean isSlotFree​(int index)
        Check whether the task slot with the given index is free.
        Parameters:
        index - of the task slot
        Returns:
        True if the task slot is free; otherwise false
      • hasAllocatedSlots

        boolean hasAllocatedSlots​(JobID jobId)
        Check whether the job has allocated (not active) slots.
        Parameters:
        jobId - for which to check for allocated slots
        Returns:
        True if there are allocated slots for the given job id.
      • getAllocatedSlots

        Iterator<TaskSlot<T>> getAllocatedSlots​(JobID jobId)
        Return an iterator of allocated slots for the given job id.
        Parameters:
        jobId - for which to return the allocated slots
        Returns:
        Iterator of allocated slots.
      • getOwningJob

        @Nullable
        JobID getOwningJob​(AllocationID allocationId)
        Returns the owning job of the TaskSlot identified by the given AllocationID.
        Parameters:
        allocationId - identifying the slot for which to retrieve the owning job
        Returns:
        Owning job of the specified TaskSlot or null if there is no slot for the given allocation id or if the slot has no owning job assigned
      • addTask

        boolean addTask​(T task)
                 throws SlotNotFoundException,
                        SlotNotActiveException
        Add the given task to the slot identified by the task's allocation id.
        Parameters:
        task - to add to the task slot with the respective allocation id
        Returns:
        True if the task could be added to the task slot; otherwise false
        Throws:
        SlotNotFoundException - if there was no slot for the given allocation id
        SlotNotActiveException - if there was no slot active for task's job and allocation id
      • removeTask

        T removeTask​(ExecutionAttemptID executionAttemptID)
        Remove the task with the given execution attempt id from its task slot. If the owning task slot is in state releasing and empty after removing the task, the slot is freed via the slot actions.
        Parameters:
        executionAttemptID - identifying the task to remove
        Returns:
        The removed task if there is any for the given execution attempt id; otherwise null
      • getTask

        T getTask​(ExecutionAttemptID executionAttemptID)
        Get the task for the given execution attempt id. If none could be found, then return null.
        Parameters:
        executionAttemptID - identifying the requested task
        Returns:
        The task for the given execution attempt id if it exist; otherwise null
      • getTasks

        Iterator<T> getTasks​(JobID jobId)
        Return an iterator over all tasks for a given job.
        Parameters:
        jobId - identifying the job of the requested tasks
        Returns:
        Iterator over all task for a given job
      • getCurrentAllocation

        AllocationID getCurrentAllocation​(int index)
        Get the current allocation for the task slot with the given index.
        Parameters:
        index - identifying the slot for which the allocation id shall be retrieved
        Returns:
        Allocation id of the specified slot if allocated; otherwise null
      • getTaskMemoryManager

        MemoryManager getTaskMemoryManager​(AllocationID allocationID)
                                    throws SlotNotFoundException
        Get the memory manager of the slot allocated for the task.
        Parameters:
        allocationID - allocation id of the slot allocated for the task
        Returns:
        the memory manager of the slot allocated for the task
        Throws:
        SlotNotFoundException