public abstract class ProcessKiller extends Object implements ExtensionPoint, Serializable
Each implementation of
ProcessKiller is instantiated once on the master.
Whenever a process needs to be killed, those implementations are serialized and sent over
to the appropriate agent, then the
kill(ProcessTree.OSProcess) method is invoked
to attempt to kill the process.
One of the consequences of this design is that the implementation should be stateless
and concurrent-safe. That is, the
kill(ProcessTree.OSProcess) method can be invoked by multiple threads
concurrently on the single instance.
Another consequence of this design is that if your
ProcessKiller requires configuration,
it needs to be serializable, and configuration needs to be updated atomically, as another
thread may be calling into
kill(ProcessTree.OSProcess) just when you are updating your configuration.
|Constructor and Description|
|Modifier and Type||Method and Description|
Returns all the registered
Attempts to kill the given process.
public static ExtensionList<ProcessKiller> all()
public abstract boolean kill(ProcessTree.OSProcess process) throws IOException, InterruptedException
process- process to be killed. Always a local process.
ProcessKillerimplementations to kill the process. false if the killing failed or is unattempted, and Hudson will continue to use the rest of the
ProcessKillerimplementations to try to kill the process.
IOException- The caller will log this exception and otherwise treat as if the method returned false, and moves on to the next killer.
InterruptedException- if the callee performs a time consuming operation and if the thread is canceled, do not catch
InterruptedExceptionand just let it thrown from the method.
Copyright © 2004–2018. All rights reserved.