Package hudson.model

Class ResourceController

java.lang.Object
hudson.model.ResourceController
Direct Known Subclasses:
Queue

public class ResourceController extends Object
Controls mutual exclusion of ResourceList.
Author:
Kohsuke Kawaguchi
  • Constructor Details

    • ResourceController

      public ResourceController()
  • Method Details

    • execute

      public void execute(@NonNull Runnable task, ResourceActivity activity) throws InterruptedException
      Performs the task that requires the given list of resources.

      The execution is blocked until the resource is available.

      Throws:
      InterruptedException - the thread can be interrupted while waiting for the available resources.
    • canRun

      public boolean canRun(ResourceList resources)
      Checks if an activity that requires the given resource list can run immediately.

      This method is really only useful as a hint, since another activity might acquire resources before the caller gets to call execute(Runnable, ResourceActivity).

    • getMissingResource

      public Resource getMissingResource(ResourceList resources)
      Of the resource in the given resource list, return the one that's currently in use.

      If more than one such resource exists, one is chosen and returned. This method is used for reporting what's causing the blockage.

    • getBlockingActivity

      public ResourceActivity getBlockingActivity(ResourceActivity activity)
      Of the activities that are in progress, return one that's blocking the given activity, or null if it's not blocked (and thus the given activity can be executed immediately.)
    • _await

      protected void _await() throws InterruptedException
      Throws:
      InterruptedException
    • _signalAll

      protected void _signalAll()
    • _withLock

      protected void _withLock(Runnable runnable)
    • _withLock

      protected <V> V _withLock(Callable<V> callable) throws Exception
      Throws:
      Exception
    • _withLock

      protected <V, T extends Throwable> V _withLock(hudson.remoting.Callable<V,T> callable) throws T
      Throws:
      T extends Throwable