Interface ExecutableOrderProvider

  • All Known Implementing Classes:
    FifoExecutableOrderProvider

    public interface ExecutableOrderProvider
    Classes implementing this interface provide ordering for the executables in queue. Implementers should not store any CommonContext inside instances of Provider.
    • Method Detail

      • onEnqueue

        void onEnqueue​(@NotNull
                       @NotNull Iterable<CommonContext> contexts)
        Will not be called concurrently. Called when new context are added to the queue.
      • onDequeue

        void onDequeue​(@NotNull
                       @NotNull CommonContext resultKey)
        Called when a context is removed from queue. It may be manually removed from queue (stopped), or sent to and acknowledged by an agent. Will not be called concurrently.
        Parameters:
        resultKey -
      • findExecutableForAgent

        @Nullable
        @Nullable ResultKey findExecutableForAgent​(long agentId,
                                                   @NotNull
                                                   @NotNull Collection<QueueOfExecutables.ExecutableData> executableData)
        From the list of executables, returns the executable that should be picked up by the agent. Returns null when there none of the supplied executables is suitable.
      • getOrderedExecutables

        @NotNull
        @NotNull Collection<BuildQueueManager.QueuedResultKey> getOrderedExecutables()
        Returns a full list of result keys of queued executables ordered with a global ordering.
        Returns:
        the returned iterable has to be thread safe.
      • reorder

        boolean reorder​(ResultKey resultKey,
                        int index)
        Called when an executable with a specific result key should be moved to a specific index in the queue. Can be ignored. Has to be thread safe, will not be mutexed with enq/deq.
        Returns:
        true if the executable has successfully been moved, false otherwise.
      • removeByKey

        void removeByKey​(ResultKey resultKey)
        Remove items with a ResultKey. Called if Bamboo detects that order provider contains references to items that are no longer accessible.