Package hudson.util

Class DoubleLaunchChecker

All Implemented Interfaces:
ExtensionPoint, ModelObject, SearchableModelObject, SearchItem, org.kohsuke.stapler.StaplerProxy

@Extension public class DoubleLaunchChecker extends AdministrativeMonitor
Makes sure that no other Hudson uses our JENKINS_HOME directory, to forestall the problem of running multiple instances of Hudson that point to the same data directory.

This set up error occasionally happens especially when the user is trying to reassign the context path of the app, and it results in a hard-to-diagnose error, so we actively check this.

The mechanism is simple. This class occasionally updates a known file inside the hudson home directory, and whenever it does so, it monitors the timestamp of the file to make sure no one else is updating this file. In this way, while we cannot detect the problem right away, within a reasonable time frame we can detect the collision.

Since:
1.178
Author:
Kohsuke Kawaguchi
  • Field Details

    • home

      public final File home
  • Constructor Details

    • DoubleLaunchChecker

      public DoubleLaunchChecker()
  • Method Details

    • getDisplayName

      public String getDisplayName()
      Specified by:
      getDisplayName in interface ModelObject
      Overrides:
      getDisplayName in class AdministrativeMonitor
    • isActivated

      public boolean isActivated()
      Description copied from class: AdministrativeMonitor
      Returns true if this monitor is activated and wants to produce a warning message.

      This method is called from the HTML rendering thread, so it should run efficiently.

      Specified by:
      isActivated in class AdministrativeMonitor
    • execute

      protected void execute()
    • getId

      public String getId()
      Figures out a string that identifies this instance of Hudson.
    • getCollidingId

      public String getCollidingId()