public class DoubleLaunchChecker extends Object
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.
More traditional way of doing this is to use a lock file with PID in it, but unfortunately in Java, there's no reliable way to obtain PID.
Constructor and Description |
---|
DoubleLaunchChecker() |
Modifier and Type | Method and Description |
---|---|
void |
doDynamic(org.kohsuke.stapler.StaplerRequest req,
org.kohsuke.stapler.StaplerResponse rsp)
Serve all URLs with the index view.
|
void |
doIgnore(org.kohsuke.stapler.StaplerRequest req,
org.kohsuke.stapler.StaplerResponse rsp)
Ignore the problem and go back to using Hudson.
|
protected void |
execute() |
String |
getCollidingId() |
String |
getId()
Figures out a string that identifies this instance of Hudson.
|
static void |
init() |
void |
schedule()
Schedules the next execution.
|
public final File home
protected void execute()
public String getId()
public String getCollidingId()
public void schedule()
@Initializer(after=JOB_CONFIG_ADAPTED) public static void init()
public void doDynamic(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException, javax.servlet.ServletException
IOException
javax.servlet.ServletException
public void doIgnore(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException
IOException
Copyright © 2004–2021. All rights reserved.