Package hudson.model

Class AperiodicWork

All Implemented Interfaces:
ExtensionPoint, Runnable
Direct Known Subclasses:
AsyncAperiodicWork, ComputerRetentionWork, DoubleLaunchChecker.Schedule

public abstract class AperiodicWork extends SafeTimerTask implements ExtensionPoint
Extension point which allows scheduling a task with variable interval. Interval in evaluated every time before next task is scheduled by calling getRecurrencePeriod(). Task to be scheduled is obtain by calling getNewInstance().

This class is similar to PeriodicWork. The main difference is in re-evaluating delay interval every time. See PeriodicWork for details. Analog of AsyncPeriodicWork is AsyncAperiodicWork.

Since:
1.410
Author:
vjuranek
  • Field Details

    • logger

      protected final Logger logger
  • Constructor Details

    • AperiodicWork

      public AperiodicWork()
  • Method Details

    • getRecurrencePeriod

      public abstract long getRecurrencePeriod()
      Gets the number of milliseconds between successive executions.

      Jenkins calls this method every time the timer task is scheduled.

    • getNewInstance

      public abstract AperiodicWork getNewInstance()
      Gets new instance of task to be executed. Method should return new instance each time, as there no check, if previously scheduled task already finished. Returning same instance could lead to throwing IllegalStateException (especially in case of AsyncAperiodicWork) and therefore scheduling of next tasks will be broken.
      Returns:
      AperiodicWork - timer task instance to be executed
    • getInitialDelay

      public long getInitialDelay()
      Gets the number of milliseconds till the first execution.

      By default it chooses the value randomly between 0 and getRecurrencePeriod()

    • doRun

      public final void doRun() throws Exception
      Specified by:
      doRun in class SafeTimerTask
      Throws:
      Exception
    • init

      @Initializer(after=JOB_CONFIG_ADAPTED) public static void init()
    • doAperiodicRun

      protected abstract void doAperiodicRun()
    • all

      public static ExtensionList<AperiodicWork> all()
      Returns all the registered AperiodicWorks.